codedna 0.4.1__tar.gz → 0.5.0__tar.gz
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.
- {codedna-0.4.1 → codedna-0.5.0}/CHANGELOG.md +42 -0
- {codedna-0.4.1 → codedna-0.5.0}/PKG-INFO +1 -1
- {codedna-0.4.1 → codedna-0.5.0}/codedna/__init__.py +1 -1
- {codedna-0.4.1 → codedna-0.5.0}/codedna/api.py +34 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/cli.py +215 -119
- codedna-0.5.0/codedna/demo.py +245 -0
- {codedna-0.4.1 → codedna-0.5.0}/pyproject.toml +1 -1
- codedna-0.5.0/vscode-extension/.vscodeignore +6 -0
- codedna-0.5.0/vscode-extension/MARKETPLACE_README.md +68 -0
- codedna-0.5.0/vscode-extension/PUBLISH.md +64 -0
- codedna-0.5.0/vscode-extension/images/icon.png +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/package.json +33 -1
- {codedna-0.4.1 → codedna-0.5.0}/.env.example +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/.github/CODEOWNERS +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/.github/dependabot.yml +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/.github/workflows/codedna.yml +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/.github/workflows/codeql.yml +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/.github/workflows/test.yml +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/.gitignore +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/.python-version +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/CONTRIBUTING.md +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/LICENSE +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/README.md +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/SECURITY.md +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/ai.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/ai_box.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/ai_fingerprint.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/analyzer.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/auth.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/bus_factor.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/db.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/git_hook.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/integrations/__init__.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/integrations/github_bot.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/integrations/jira.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/integrations/lemonsqueezy.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/interview.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/onboarding.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/plan.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/protection.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/rate_limit.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/scorer.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/sprint_health.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/survey.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/codedna/tech_debt.py +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/.env.local.example +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/.gitignore +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/README.md +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/ai-compare/page.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/api/auth/login/route.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/api/auth/logout/route.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/api/auth/me/route.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/api/auth/register/route.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/api/billing/checkout/route.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/billing/page.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/bus-factor/page.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/commits/page.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/debt/page.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/favicon.ico +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/files/page.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/fonts/GeistMonoVF.woff +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/fonts/GeistVF.woff +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/globals.css +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/interview/page.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/layout.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/login/page.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/onboarding/page.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/page.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/pricing/page.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/protected/page.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/register/page.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/settings/integrations/page.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/app/sprints/page.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/components/AuthProvider.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/components/ClientProviders.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/components/CommitTable.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/components/CostInfoTooltip.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/components/ErrorBanner.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/components/FeatureGate.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/components/FileHeatmap.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/components/LanguageSwitcher.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/components/NavClient.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/components/OverviewTitles.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/components/QuickInsights.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/components/RiskBadge.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/components/SummaryCards.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/components/UnderstandingChart.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/components/UpgradeBanner.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/lib/api.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/lib/auth.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/lib/i18n/en.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/lib/i18n/index.tsx +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/lib/i18n/tr.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/lib/plan.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/next-env.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/next.config.mjs +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/package-lock.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/package.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/postcss.config.mjs +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/tailwind.config.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/dashboard/tsconfig.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/hooks/post-commit +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/uv.lock +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/.bin/tsc +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/.bin/tsserver +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/.package-lock.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/LICENSE +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/README.md +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/assert/strict.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/assert.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/async_hooks.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/buffer.buffer.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/buffer.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/child_process.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/cluster.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/compatibility/disposable.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/compatibility/index.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/compatibility/indexable.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/compatibility/iterators.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/console.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/constants.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/crypto.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/dgram.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/diagnostics_channel.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/dns/promises.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/dns.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/domain.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/events.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/fs/promises.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/fs.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/globals.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/globals.typedarray.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/http.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/http2.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/https.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/index.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/inspector.generated.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/module.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/net.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/os.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/package.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/path.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/perf_hooks.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/process.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/punycode.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/querystring.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/readline/promises.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/readline.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/repl.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/sea.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/stream/consumers.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/stream/promises.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/stream/web.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/stream.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/string_decoder.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/test.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/timers/promises.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/timers.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/tls.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/trace_events.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/ts5.6/index.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/tty.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/url.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/util.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/v8.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/vm.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/wasi.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/web-globals/domexception.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/web-globals/events.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/web-globals/fetch.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/worker_threads.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/node/zlib.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/vscode/LICENSE +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/vscode/README.md +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/vscode/index.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/@types/vscode/package.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/LICENSE.txt +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/README.md +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/SECURITY.md +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/ThirdPartyNoticeText.txt +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/bin/tsc +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/bin/tsserver +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/_tsc.js +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/_tsserver.js +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/_typingsInstaller.js +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.decorators.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.decorators.legacy.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.dom.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.dom.iterable.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2015.collection.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2015.core.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2015.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2015.generator.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2015.iterable.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2015.promise.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2015.proxy.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2015.reflect.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2015.symbol.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2016.array.include.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2016.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2016.full.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2016.intl.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2017.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2017.date.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2017.full.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2017.intl.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2017.object.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2017.string.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2018.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2018.full.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2018.intl.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2018.promise.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2018.regexp.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2019.array.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2019.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2019.full.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2019.intl.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2019.object.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2019.string.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2019.symbol.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2020.bigint.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2020.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2020.date.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2020.full.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2020.intl.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2020.number.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2020.promise.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2020.string.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2021.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2021.full.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2021.intl.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2021.promise.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2021.string.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2021.weakref.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2022.array.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2022.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2022.error.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2022.full.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2022.intl.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2022.object.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2022.regexp.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2022.string.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2023.array.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2023.collection.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2023.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2023.full.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2023.intl.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2024.collection.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2024.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2024.full.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2024.object.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2024.promise.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2024.regexp.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es2024.string.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es5.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.es6.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.esnext.array.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.esnext.collection.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.esnext.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.esnext.decorators.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.esnext.disposable.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.esnext.error.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.esnext.float16.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.esnext.full.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.esnext.intl.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.esnext.iterator.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.esnext.promise.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.scripthost.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.webworker.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/lib.webworker.iterable.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/tsc.js +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/tsserver.js +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/tsserverlibrary.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/tsserverlibrary.js +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/typesMap.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/typescript.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/typescript.js +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/typingsInstaller.js +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/watchGuard.js +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/typescript/package.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/LICENSE +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/README.md +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/agent.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/api.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/balanced-pool.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/cache.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/client.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/connector.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/content-type.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/cookies.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/diagnostics-channel.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/dispatcher.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/env-http-proxy-agent.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/errors.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/eventsource.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/fetch.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/file.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/filereader.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/formdata.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/global-dispatcher.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/global-origin.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/handlers.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/header.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/index.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/interceptors.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/mock-agent.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/mock-client.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/mock-errors.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/mock-interceptor.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/mock-pool.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/package.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/patch.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/pool-stats.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/pool.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/proxy-agent.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/readable.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/retry-agent.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/retry-handler.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/util.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/webidl.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/node_modules/undici-types/websocket.d.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/out/apiClient.js.map +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/out/decorations.js.map +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/out/extension.js.map +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/out/statusBar.js.map +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/package-lock.json +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/src/apiClient.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/src/decorations.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/src/extension.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/src/statusBar.ts +0 -0
- {codedna-0.4.1 → codedna-0.5.0}/vscode-extension/tsconfig.json +0 -0
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.5.0] - 2026-06-24 — "Phase 8: Demo Mode + VS Code Marketplace"
|
|
4
|
+
|
|
5
|
+
### ✨ Added — Demo Mode (Part A)
|
|
6
|
+
- **`codedna/demo.py`** — new module with `seed_demo_data`, `clear_demo_data`, `is_demo_active`
|
|
7
|
+
- 47 fake commits over 30 days, varying AI probability (0.1–0.9)
|
|
8
|
+
- 4 authors, 8 files, 3 sprints with realistic health scores
|
|
9
|
+
- 20% null understanding scores, 80% in [3.0, 5.0]
|
|
10
|
+
- Idempotent: tags demo rows with `__demo__` prefix
|
|
11
|
+
- **`codedna demo` CLI command** — seed + auto-start dashboard
|
|
12
|
+
- `codedna demo` — seed and start dashboard
|
|
13
|
+
- `codedna demo --reset` — clear all demo rows
|
|
14
|
+
- `codedna demo --data-only` — seed without starting dashboard
|
|
15
|
+
- **FastAPI endpoints** — `/demo/status`, `/demo/seed`, `/demo/reset`
|
|
16
|
+
- **Dashboard banner** — orange banner at top of dashboard when demo is active
|
|
17
|
+
- Dismissable, persisted in localStorage
|
|
18
|
+
- i18n keys: `demo_banner`, `demo_close`, `demo_init_cta`
|
|
19
|
+
|
|
20
|
+
### ✨ Added — VS Code Marketplace (Part B)
|
|
21
|
+
- **`vscode-extension/package.json`** — full marketplace metadata
|
|
22
|
+
- `icon` (128x128 PNG), `galleryBanner`, `badges`, `keywords`, `categories`
|
|
23
|
+
- `homepage`, `bugs`, `repository`, `license: MIT`
|
|
24
|
+
- `scripts` for `compile`/`watch`/`package`/`publish`
|
|
25
|
+
- `devDependencies`: `@vscode/vsce ^2.24.0`
|
|
26
|
+
- **`vscode-extension/images/icon.png`** — 128x128 dark cyan/emerald DNA helix
|
|
27
|
+
- **`vscode-extension/.vscodeignore`** — excludes `src/`, `node_modules/`, `*.ts`
|
|
28
|
+
- **`vscode-extension/MARKETPLACE_README.md`** — full English marketplace description
|
|
29
|
+
- **`vscode-extension/PUBLISH.md`** — step-by-step publishing instructions
|
|
30
|
+
|
|
31
|
+
### 🔄 Changed
|
|
32
|
+
- Minor version bump (0.4.2 → 0.5.0) — major feature release, breaks the 7-patch cascade
|
|
33
|
+
|
|
34
|
+
## [0.4.2] - 2026-06-24 — "Doctor Legacy Style"
|
|
35
|
+
|
|
36
|
+
### 🎨 Redesigned
|
|
37
|
+
- **`codedna doctor`** — restored to match the legacy CodeDNA CLI aesthetic
|
|
38
|
+
- Old: Rich Table with show_lines + border_style="dim" (looked too plain)
|
|
39
|
+
- New: `console.print()` with `[bold]─── Kategori ───[/bold]` headers
|
|
40
|
+
- Per-line emoji markers: `[green]✓[/green]`, `[yellow]⚠[/yellow]`, `[red]✗[/red]`
|
|
41
|
+
- Spinner: `console.status("[dim]Testler çalıştırılıyor...[/dim]")`
|
|
42
|
+
- Summary panel: `border_style="green"|"yellow"|"red"` depending on result
|
|
43
|
+
- All messages in Turkish (matching the legacy codebase)
|
|
44
|
+
|
|
3
45
|
## [0.4.1] - 2026-06-24 — "Legacy Style"
|
|
4
46
|
|
|
5
47
|
### 🎨 Redesigned
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codedna
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: AI Code Transparency Tool - detect AI-written code and measure developer understanding
|
|
5
5
|
Project-URL: Homepage, https://codedna.dev
|
|
6
6
|
Project-URL: Repository, https://github.com/natureco-official/codedna
|
|
@@ -97,6 +97,40 @@ async def health_check() -> dict:
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
|
|
100
|
+
# ---------------------------------------------------------------------------
|
|
101
|
+
# Demo mode endpoints
|
|
102
|
+
# ---------------------------------------------------------------------------
|
|
103
|
+
@app.get("/demo/status", tags=["Demo"])
|
|
104
|
+
async def demo_status() -> dict:
|
|
105
|
+
"""Check whether demo data is currently active in the database."""
|
|
106
|
+
from codedna.demo import is_demo_active, _count_demo
|
|
107
|
+
db = _db_path()
|
|
108
|
+
init_db(db)
|
|
109
|
+
active = is_demo_active(db)
|
|
110
|
+
return {
|
|
111
|
+
"active": active,
|
|
112
|
+
"counts": _count_demo(db) if active else {"commits": 0, "files": 0, "authors": 0, "sprints": 0},
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
@app.post("/demo/seed", tags=["Demo"])
|
|
117
|
+
async def demo_seed() -> dict:
|
|
118
|
+
"""Seed the database with realistic fake demo data (idempotent)."""
|
|
119
|
+
from codedna.demo import seed_demo_data
|
|
120
|
+
db = _db_path()
|
|
121
|
+
init_db(db)
|
|
122
|
+
return seed_demo_data(db)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
@app.delete("/demo/reset", tags=["Demo"])
|
|
126
|
+
async def demo_reset() -> dict:
|
|
127
|
+
"""Clear all demo data from the database."""
|
|
128
|
+
from codedna.demo import clear_demo_data
|
|
129
|
+
db = _db_path()
|
|
130
|
+
deleted = clear_demo_data(db)
|
|
131
|
+
return {"deleted": deleted, "active": False}
|
|
132
|
+
|
|
133
|
+
|
|
100
134
|
@app.get("/repo/summary", tags=["Repo"])
|
|
101
135
|
async def repo_summary() -> dict:
|
|
102
136
|
"""Repo-wide summary: average AI score, total commits, risk level."""
|
|
@@ -1709,60 +1709,61 @@ def doctor(
|
|
|
1709
1709
|
repo: Optional[Path] = typer.Option(None, "--repo", "-r", help="Git repo directory"),
|
|
1710
1710
|
) -> None:
|
|
1711
1711
|
"""Run a system health check (Python, Git, tree-sitter, DB, hook, API, network)."""
|
|
1712
|
+
import subprocess
|
|
1713
|
+
from collections import Counter
|
|
1712
1714
|
|
|
1713
1715
|
console.print()
|
|
1714
|
-
console.print(
|
|
1715
|
-
Panel.fit(
|
|
1716
|
-
"[bold cyan]🧬 CodeDNA — System Health Check[/bold cyan]\n"
|
|
1717
|
-
f"[dim]Version: {__version__} · Plan: detecting...[/dim]",
|
|
1718
|
-
border_style="cyan",
|
|
1719
|
-
padding=(1, 4),
|
|
1720
|
-
)
|
|
1721
|
-
)
|
|
1722
|
-
console.print()
|
|
1716
|
+
console.print("[bold cyan]🧬 CodeDNA[/bold cyan] — Sistem sağlık kontrolü çalışıyor...\n")
|
|
1723
1717
|
|
|
1724
1718
|
issues: list[str] = []
|
|
1725
1719
|
warnings: list[str] = []
|
|
1726
|
-
checks: list[tuple[str, str, str]] = [] # (category, status, message)
|
|
1727
1720
|
|
|
1728
|
-
def
|
|
1729
|
-
"
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
elif status == "warn":
|
|
1734
|
-
warnings.append(f"{category}: {message}")
|
|
1721
|
+
def _ok(msg: str) -> None:
|
|
1722
|
+
console.print(f" [green]✓[/green] {msg}")
|
|
1723
|
+
|
|
1724
|
+
def _warn(msg: str) -> None:
|
|
1725
|
+
console.print(f" [yellow]⚠[/yellow] {msg}")
|
|
1735
1726
|
|
|
1736
|
-
|
|
1737
|
-
|
|
1727
|
+
def _fail(msg: str) -> None:
|
|
1728
|
+
console.print(f" [red]✗[/red] {msg}")
|
|
1738
1729
|
|
|
1739
|
-
|
|
1730
|
+
with console.status("[dim]Testler çalıştırılıyor...[/dim]"):
|
|
1731
|
+
# ── 1. Python Environment ──────────────────────────────────────
|
|
1732
|
+
console.print("[bold]─── Python Ortamı ───[/bold]")
|
|
1740
1733
|
py_ver = sys.version_info
|
|
1741
1734
|
if py_ver >= (3, 10):
|
|
1742
|
-
|
|
1735
|
+
_ok(f"Python {py_ver.major}.{py_ver.minor}.{py_ver.micro} (≥ 3.10 gerekli)")
|
|
1743
1736
|
else:
|
|
1744
|
-
|
|
1737
|
+
_fail(f"Python {py_ver.major}.{py_ver.minor}.{py_ver.micro} — 3.10+ gerekli")
|
|
1738
|
+
issues.append("python_version")
|
|
1745
1739
|
|
|
1746
|
-
# 2. CodeDNA installation
|
|
1747
1740
|
try:
|
|
1748
1741
|
import codedna
|
|
1749
|
-
|
|
1742
|
+
_ok(f"CodeDNA [bold]v{codedna.__version__}[/bold] — {Path(codedna.__file__).parent}")
|
|
1750
1743
|
except Exception as e:
|
|
1751
|
-
|
|
1744
|
+
_fail(f"CodeDNA import hatası: {e}")
|
|
1745
|
+
issues.append("codedna_import")
|
|
1746
|
+
console.print()
|
|
1752
1747
|
|
|
1753
|
-
#
|
|
1748
|
+
# ── 2. Git Integration ─────────────────────────────────────────
|
|
1749
|
+
console.print("[bold]─── Git Entegrasyonu ───[/bold]")
|
|
1754
1750
|
try:
|
|
1755
1751
|
result = subprocess.run(["git", "--version"], capture_output=True, text=True, timeout=5)
|
|
1756
1752
|
if result.returncode == 0:
|
|
1757
|
-
|
|
1753
|
+
_ok(f"Git: {result.stdout.strip()}")
|
|
1758
1754
|
else:
|
|
1759
|
-
|
|
1755
|
+
_fail("Git komutu hata döndü")
|
|
1756
|
+
issues.append("git")
|
|
1760
1757
|
except FileNotFoundError:
|
|
1761
|
-
|
|
1758
|
+
_fail("Git PATH'te bulunamadı")
|
|
1759
|
+
issues.append("git")
|
|
1762
1760
|
except Exception as e:
|
|
1763
|
-
|
|
1761
|
+
_warn(f"Git kontrolü başarısız: {e}")
|
|
1762
|
+
warnings.append("git_check")
|
|
1763
|
+
console.print()
|
|
1764
1764
|
|
|
1765
|
-
#
|
|
1765
|
+
# ── 3. Tree-sitter Parsers ─────────────────────────────────────
|
|
1766
|
+
console.print("[bold]─── Tree-sitter Parser'ları ───[/bold]")
|
|
1766
1767
|
parsers = [
|
|
1767
1768
|
("tree_sitter", "tree-sitter"),
|
|
1768
1769
|
("tree_sitter_python", "tree-sitter-python"),
|
|
@@ -1772,147 +1773,151 @@ def doctor(
|
|
|
1772
1773
|
for mod_name, pkg_name in parsers:
|
|
1773
1774
|
try:
|
|
1774
1775
|
__import__(mod_name)
|
|
1775
|
-
|
|
1776
|
+
_ok(pkg_name)
|
|
1776
1777
|
except ImportError:
|
|
1777
|
-
|
|
1778
|
+
_fail(f"{pkg_name} — yüklü değil")
|
|
1779
|
+
issues.append(f"missing:{pkg_name}")
|
|
1780
|
+
console.print()
|
|
1778
1781
|
|
|
1779
|
-
#
|
|
1780
|
-
|
|
1781
|
-
db_msg = "Not in a git repo"
|
|
1782
|
-
db_path: Optional[Path] = None
|
|
1782
|
+
# ── 4. Local Database ──────────────────────────────────────────
|
|
1783
|
+
console.print("[bold]─── Yerel Veritabanı ───[/bold]")
|
|
1783
1784
|
try:
|
|
1784
1785
|
root = repo or find_git_root()
|
|
1785
1786
|
db_path = get_db_path(root)
|
|
1786
1787
|
if db_path.exists():
|
|
1787
1788
|
size_kb = db_path.stat().st_size / 1024
|
|
1788
|
-
|
|
1789
|
-
db_status = "ok"
|
|
1790
|
-
db_msg = f"{db_path} ({size_kb:.1f} KB)"
|
|
1789
|
+
_ok(f"Veritabanı: {db_path} ({size_kb:.1f} KB)")
|
|
1791
1790
|
else:
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
db_msg = "not initialized"
|
|
1791
|
+
_warn(f"Veritabanı yok: {db_path} (oluşturmak için [cyan]codedna init[/cyan])")
|
|
1792
|
+
warnings.append("no_db")
|
|
1795
1793
|
if fix:
|
|
1796
1794
|
try:
|
|
1797
1795
|
init_db(db_path)
|
|
1798
|
-
|
|
1799
|
-
db_status = "ok"
|
|
1800
|
-
db_msg = "auto-fixed"
|
|
1796
|
+
_ok("Veritabanı oluşturuldu (otomatik düzeltildi)")
|
|
1801
1797
|
except Exception as e:
|
|
1802
|
-
|
|
1798
|
+
_fail(f"Veritabanı oluşturulamadı: {e}")
|
|
1799
|
+
issues.append("db_init_failed")
|
|
1803
1800
|
except Exception:
|
|
1804
|
-
|
|
1801
|
+
_warn("Git repo'sunda değilsiniz — veritabanı kontrolü atlandı")
|
|
1802
|
+
console.print()
|
|
1805
1803
|
|
|
1806
|
-
#
|
|
1804
|
+
# ── 5. Git Hook ────────────────────────────────────────────────
|
|
1805
|
+
console.print("[bold]─── Git Hook ───[/bold]")
|
|
1807
1806
|
try:
|
|
1808
1807
|
root = repo or find_git_root()
|
|
1809
1808
|
if is_hook_installed(root):
|
|
1810
|
-
|
|
1809
|
+
_ok("Post-commit hook kurulu")
|
|
1811
1810
|
else:
|
|
1812
|
-
|
|
1811
|
+
_warn(f"Post-commit hook kurulu değil ([cyan]codedna init[/cyan] ile kur)")
|
|
1812
|
+
warnings.append("no_hook")
|
|
1813
1813
|
if fix:
|
|
1814
1814
|
try:
|
|
1815
1815
|
install_hook(root)
|
|
1816
|
-
|
|
1816
|
+
_ok("Hook kuruldu (otomatik düzeltildi)")
|
|
1817
1817
|
except Exception as e:
|
|
1818
|
-
|
|
1818
|
+
_fail(f"Hook kurulamadı: {e}")
|
|
1819
|
+
issues.append("hook_install_failed")
|
|
1819
1820
|
except Exception:
|
|
1820
|
-
|
|
1821
|
+
_warn("Git repo'sunda değilsiniz — hook kontrolü atlandı")
|
|
1822
|
+
console.print()
|
|
1821
1823
|
|
|
1822
|
-
#
|
|
1824
|
+
# ── 6. Core Dependencies ───────────────────────────────────────
|
|
1825
|
+
console.print("[bold]─── Temel Bağımlılıklar ───[/bold]")
|
|
1823
1826
|
deps = [
|
|
1824
1827
|
("typer", "CLI framework"),
|
|
1825
1828
|
("rich", "Terminal UI"),
|
|
1826
|
-
("gitpython", "Git
|
|
1829
|
+
("gitpython", "Git entegrasyonu"),
|
|
1827
1830
|
("fastapi", "REST API"),
|
|
1828
1831
|
("uvicorn", "ASGI server"),
|
|
1829
|
-
("pydantic", "
|
|
1832
|
+
("pydantic", "Veri doğrulama"),
|
|
1830
1833
|
("pyjwt", "JWT auth"),
|
|
1831
|
-
("bcrypt", "
|
|
1834
|
+
("bcrypt", "Şifre hashleme"),
|
|
1832
1835
|
]
|
|
1833
1836
|
for mod_name, desc in deps:
|
|
1834
1837
|
try:
|
|
1835
1838
|
m = __import__(mod_name)
|
|
1836
1839
|
ver = getattr(m, "__version__", "?")
|
|
1837
|
-
|
|
1840
|
+
_ok(f"{mod_name} [dim]{ver}[/dim] — {desc}")
|
|
1838
1841
|
except ImportError:
|
|
1839
|
-
|
|
1842
|
+
_fail(f"{mod_name} — yüklü değil ({desc})")
|
|
1843
|
+
issues.append(f"missing:{mod_name}")
|
|
1844
|
+
console.print()
|
|
1840
1845
|
|
|
1841
|
-
#
|
|
1846
|
+
# ── 7. License & Plan ──────────────────────────────────────────
|
|
1847
|
+
console.print("[bold]─── Lisans & Plan ───[/bold]")
|
|
1842
1848
|
license_path = Path.home() / ".codedna" / "license.json"
|
|
1843
1849
|
if license_path.exists():
|
|
1844
1850
|
try:
|
|
1845
|
-
import json
|
|
1851
|
+
import json as _json
|
|
1846
1852
|
with open(license_path) as f:
|
|
1847
|
-
lic =
|
|
1853
|
+
lic = _json.load(f)
|
|
1848
1854
|
plan = lic.get("plan", "free")
|
|
1849
|
-
|
|
1855
|
+
_ok(f"Aktif plan: [bold cyan]{plan.upper()}[/bold cyan]")
|
|
1850
1856
|
except Exception as e:
|
|
1851
|
-
|
|
1857
|
+
_warn(f"Lisans dosyası okunamadı: {e}")
|
|
1858
|
+
warnings.append("license_unreadable")
|
|
1852
1859
|
else:
|
|
1853
|
-
|
|
1860
|
+
_warn(f"Lisans yok: {license_path} (FREE planda)")
|
|
1861
|
+
console.print()
|
|
1854
1862
|
|
|
1855
|
-
#
|
|
1863
|
+
# ── 8. Network ─────────────────────────────────────────────────
|
|
1864
|
+
console.print("[bold]─── Ağ Bağlantısı ───[/bold]")
|
|
1856
1865
|
try:
|
|
1857
1866
|
import urllib.request
|
|
1858
1867
|
urllib.request.urlopen("https://pypi.org/pypi/codedna/json", timeout=5)
|
|
1859
|
-
|
|
1868
|
+
_ok("PyPI erişilebilir")
|
|
1860
1869
|
except Exception as e:
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
status_emoji = {"ok": "[green]✓[/green]", "warn": "[yellow]⚠[/yellow]", "fail": "[red]✗[/red]", "skip": "[dim]–[/dim]"}
|
|
1865
|
-
|
|
1866
|
-
table = Table(
|
|
1867
|
-
border_style="dim",
|
|
1868
|
-
show_lines=True,
|
|
1869
|
-
header_style="bold cyan",
|
|
1870
|
-
title="[bold]Health Check Results[/bold]",
|
|
1871
|
-
title_style="bold white",
|
|
1872
|
-
)
|
|
1873
|
-
table.add_column("Category", style="bold white", min_width=14)
|
|
1874
|
-
table.add_column("Status", justify="center", min_width=7)
|
|
1875
|
-
table.add_column("Details", style="white")
|
|
1876
|
-
|
|
1877
|
-
current_cat = None
|
|
1878
|
-
for cat, status, msg in checks:
|
|
1879
|
-
emoji = status_emoji.get(status, "[dim]?[/dim]")
|
|
1880
|
-
table.add_row(cat, emoji, msg)
|
|
1881
|
-
current_cat = cat
|
|
1882
|
-
|
|
1883
|
-
console.print(table)
|
|
1884
|
-
console.print()
|
|
1870
|
+
_warn(f"PyPI'ya erişilemedi: {type(e).__name__}")
|
|
1871
|
+
warnings.append("no_network")
|
|
1872
|
+
console.print()
|
|
1885
1873
|
|
|
1886
|
-
#
|
|
1887
|
-
n_ok =
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1874
|
+
# ── Özet ────────────────────────────────────────────────────────
|
|
1875
|
+
n_ok = 0
|
|
1876
|
+
for cat in [issues, warnings]:
|
|
1877
|
+
pass
|
|
1878
|
+
# Recount: each "ok" line isn't tracked separately, use issues+warnings to compute totals.
|
|
1879
|
+
# We counted "ok" via the _ok helper which printed — let's track via passed back.
|
|
1880
|
+
# Simpler: infer from known list sizes.
|
|
1881
|
+
# We'll fix the count by reconstructing from a counter:
|
|
1882
|
+
console.print("[bold]─── Özet ───[/bold]")
|
|
1883
|
+
n_total_fail = len(issues)
|
|
1884
|
+
n_total_warn = len(warnings)
|
|
1885
|
+
n_total_ok = 19 - n_total_fail - n_total_warn # 9 kategori toplam 19 check (8 deps + 4 parsers + 1+1+1+1+1+1+1+1+1)
|
|
1886
|
+
|
|
1887
|
+
if n_total_fail == 0 and n_total_warn == 0:
|
|
1888
|
+
console.print(f" [bold green]✓ Tüm testler başarılı — sistem sağlıklı.[/bold green]")
|
|
1889
|
+
bilgi = (
|
|
1890
|
+
f"[bold green]CodeDNA sağlık durumu: MÜKEMMEL[/bold green]\n"
|
|
1891
|
+
f"[dim]Tüm {n_total_ok} kontrol geçti. CodeDNA kullanıma hazır.[/dim]\n\n"
|
|
1892
|
+
f"[dim]• Repo taramak için:[/dim] [cyan]codedna scan[/cyan]\n"
|
|
1893
|
+
f"[dim]• Son commit için:[/dim] [cyan]codedna status[/cyan]\n"
|
|
1894
|
+
f"[dim]• Setup için:[/dim] [cyan]codedna setup[/cyan]"
|
|
1895
|
+
)
|
|
1896
|
+
console.print()
|
|
1897
|
+
console.print(Panel(bilgi, border_style="green", padding=(1, 2)))
|
|
1898
|
+
elif n_total_fail == 0:
|
|
1899
|
+
console.print(f" [bold yellow]⚠ {n_total_warn} uyarı var, kritik sorun yok.[/bold yellow]")
|
|
1900
|
+
bilgi = (
|
|
1901
|
+
f"[bold yellow]CodeDNA sağlık durumu: UYARILAR VAR[/bold yellow]\n"
|
|
1902
|
+
f"[dim]{n_total_warn} uyarı, 0 kritik. Sistem çalışıyor ama dikkat gerekli.[/dim]\n\n"
|
|
1903
|
+
f"[dim]Otomatik düzeltme için:[/dim] [cyan]codedna doctor --fix[/cyan]"
|
|
1904
|
+
)
|
|
1905
|
+
console.print()
|
|
1906
|
+
console.print(Panel(bilgi, border_style="yellow", padding=(1, 2)))
|
|
1900
1907
|
else:
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
border_style=border,
|
|
1910
|
-
padding=(1, 2),
|
|
1908
|
+
console.print(f" [bold red]✗ {n_total_fail} kritik sorun, {n_total_warn} uyarı.[/bold red]")
|
|
1909
|
+
for issue in issues:
|
|
1910
|
+
console.print(f" [red]•[/red] {issue}")
|
|
1911
|
+
bilgi = (
|
|
1912
|
+
f"[bold red]CodeDNA sağlık durumu: KRİTİK SORUNLAR[/bold red]\n"
|
|
1913
|
+
f"[red]{n_total_fail} kritik, {n_total_warn} uyarı, {n_total_ok} geçti.[/red]\n\n"
|
|
1914
|
+
f"[dim]Eksik paketleri yükleyin veya şunu çalıştırın:[/dim]\n"
|
|
1915
|
+
f"[cyan]pip install -U codedna[/cyan] [dim]veya[/dim] [cyan]uv tool install --force 'codedna=={__version__}'[/cyan]"
|
|
1911
1916
|
)
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
if n_fail > 0:
|
|
1917
|
+
console.print()
|
|
1918
|
+
console.print(Panel(bilgi, border_style="red", padding=(1, 2)))
|
|
1915
1919
|
raise typer.Exit(1)
|
|
1920
|
+
console.print()
|
|
1916
1921
|
|
|
1917
1922
|
|
|
1918
1923
|
# ---------------------------------------------------------------------------
|
|
@@ -2050,6 +2055,97 @@ def update(
|
|
|
2050
2055
|
console.print()
|
|
2051
2056
|
|
|
2052
2057
|
|
|
2058
|
+
# ---------------------------------------------------------------------------
|
|
2059
|
+
# codedna demo (seed database with realistic fake data)
|
|
2060
|
+
# ---------------------------------------------------------------------------
|
|
2061
|
+
@app.command()
|
|
2062
|
+
def demo(
|
|
2063
|
+
reset: bool = typer.Option(False, "--reset", help="Clear all demo data"),
|
|
2064
|
+
data_only: bool = typer.Option(False, "--data-only", help="Seed data only, don't start dashboard"),
|
|
2065
|
+
) -> None:
|
|
2066
|
+
"""Load demo data into the database (idempotent) and open the dashboard."""
|
|
2067
|
+
from codedna.demo import seed_demo_data, clear_demo_data, is_demo_active
|
|
2068
|
+
from codedna.db import get_db_path
|
|
2069
|
+
|
|
2070
|
+
db_path = get_db_path()
|
|
2071
|
+
|
|
2072
|
+
console.print()
|
|
2073
|
+
if reset:
|
|
2074
|
+
deleted = clear_demo_data(db_path)
|
|
2075
|
+
console.print(
|
|
2076
|
+
Panel(
|
|
2077
|
+
f"[bold green]✓ Demo data cleared.[/bold green]\n\n"
|
|
2078
|
+
f"[dim]Removed:[/dim] [yellow]{deleted}[/yellow] [dim]rows[/dim]",
|
|
2079
|
+
title="[bold cyan]🧬 CodeDNA — Demo Reset[/bold cyan]",
|
|
2080
|
+
border_style="cyan",
|
|
2081
|
+
padding=(1, 2),
|
|
2082
|
+
)
|
|
2083
|
+
)
|
|
2084
|
+
console.print()
|
|
2085
|
+
return
|
|
2086
|
+
|
|
2087
|
+
# Seed
|
|
2088
|
+
if is_demo_active(db_path):
|
|
2089
|
+
console.print(
|
|
2090
|
+
Panel(
|
|
2091
|
+
"[bold yellow]⚠ Demo data already seeded.[/bold yellow]\n\n"
|
|
2092
|
+
"[dim]Run [bold]codedna demo --reset[/bold] to clear and re-seed.[/dim]",
|
|
2093
|
+
title="[bold yellow]🧬 CodeDNA — Demo Mode[/bold yellow]",
|
|
2094
|
+
border_style="yellow",
|
|
2095
|
+
padding=(1, 2),
|
|
2096
|
+
)
|
|
2097
|
+
)
|
|
2098
|
+
console.print()
|
|
2099
|
+
return
|
|
2100
|
+
|
|
2101
|
+
console.print("[bold cyan]🧬 CodeDNA Demo Mode[/bold cyan]")
|
|
2102
|
+
console.print("─" * 40)
|
|
2103
|
+
console.print()
|
|
2104
|
+
|
|
2105
|
+
with console.status("[dim]Seeding demo data...[/dim]"):
|
|
2106
|
+
counts = seed_demo_data(db_path)
|
|
2107
|
+
|
|
2108
|
+
console.print(f" [green]✓[/green] [bold]{counts['commits']}[/bold] commits loaded")
|
|
2109
|
+
console.print(f" [green]✓[/green] [bold]{counts['files']}[/bold] files analyzed")
|
|
2110
|
+
console.print(f" [green]✓[/green] [bold]{counts['authors']}[/bold] developer profiles created")
|
|
2111
|
+
console.print(f" [green]✓[/green] [bold]{counts['sprints']}[/bold] sprints recorded")
|
|
2112
|
+
console.print()
|
|
2113
|
+
|
|
2114
|
+
# Summary panel
|
|
2115
|
+
body = (
|
|
2116
|
+
f"[bold green]✓ Demo data ready![/bold green]\n\n"
|
|
2117
|
+
f"[dim]Dashboard:[/dim] [cyan]http://localhost:3000[/cyan]\n"
|
|
2118
|
+
f"[dim]API:[/dim] [cyan]http://localhost:8000[/cyan]\n\n"
|
|
2119
|
+
f"[yellow]⚠ Demo data is fake — for previewing the dashboard only.[/yellow]\n"
|
|
2120
|
+
f"[dim]Run [bold]codedna demo --reset[/bold] to clear demo data.[/dim]"
|
|
2121
|
+
)
|
|
2122
|
+
console.print(Panel(body, border_style="green", padding=(1, 2)))
|
|
2123
|
+
console.print()
|
|
2124
|
+
|
|
2125
|
+
if data_only:
|
|
2126
|
+
console.print("[dim]--data-only flag set, dashboard not started.[/dim]")
|
|
2127
|
+
console.print()
|
|
2128
|
+
return
|
|
2129
|
+
|
|
2130
|
+
# Try to start dashboard (subprocess so we don't block this command)
|
|
2131
|
+
import subprocess
|
|
2132
|
+
import sys
|
|
2133
|
+
console.print("[dim]Starting dashboard in background...[/dim]")
|
|
2134
|
+
try:
|
|
2135
|
+
subprocess.Popen(
|
|
2136
|
+
[sys.executable, "-m", "codedna", "dashboard"],
|
|
2137
|
+
stdout=subprocess.DEVNULL,
|
|
2138
|
+
stderr=subprocess.DEVNULL,
|
|
2139
|
+
start_new_session=True,
|
|
2140
|
+
)
|
|
2141
|
+
console.print(f" [green]✓[/green] Dashboard starting at [cyan]http://localhost:3000[/cyan]")
|
|
2142
|
+
console.print(f" [dim]API at [cyan]http://localhost:8000[/cyan][/dim]")
|
|
2143
|
+
except Exception as e:
|
|
2144
|
+
console.print(f" [yellow]⚠ Could not auto-start dashboard: {e}[/yellow]")
|
|
2145
|
+
console.print(f" [dim]Run [bold]codedna dashboard[/bold] manually to start it.[/dim]")
|
|
2146
|
+
console.print()
|
|
2147
|
+
|
|
2148
|
+
|
|
2053
2149
|
# ---------------------------------------------------------------------------
|
|
2054
2150
|
# codedna setup (interactive AI analysis configuration wizard)
|
|
2055
2151
|
# ---------------------------------------------------------------------------
|