Skip to content

fix(analyzer): audit fixes for v0.9.3 (analyzer, AI timeouts, domain grounding, onboarding) - #150

Merged
itsflaid merged 5 commits into
mainfrom
fix/analyzer-audit-0.9.3
Nov 12, 2026
Merged

itsflaid merged 5 commits into
mainfrom
fix/analyzer-audit-0.9.3

Conversation

@itsflaid

Copy link
Copy Markdown
Owner

Summary

Fixes from a full test pass of v0.9.3 (19 public repos across Next, Nuxt, SvelteKit, Remix, Astro, Vue, Nest, Hono, Express, t3-turbo, tRPC, excalidraw, Django, Flask, Laravel, Gin, Spring; every CLI command; the MCP server; a mock AI server for failure modes).

Analyzer

  • Vue SFCs with both <script> and <script setup> read every block, so graph edges and impact are complete.
  • Config files (*.config.e2e.ts, tooling configs) are no longer entry points; Angular app.config.ts stays one when its siblings exist.
  • next.config/nuxt.config detection uses source files only, so examples/with-nextjs no longer makes excalidraw a Next.js project.
  • Image, font, media and PDF files are not feature evidence (PayPal.svg no longer yields a Payments feature).
  • A line over 50,000 characters is skipped (confidence low): a one-line 1.7 MB bundle made analyze hang for over 120 s, now 1.6 s.
  • A file TypeScript had to recover from, and a template-only SFC, is medium instead of high.
  • packages: ["."] no longer makes a monorepo.
  • A /docs page and the Documentation role are one feature, named "Documentation".
  • Vocabulary features that only a file name or local import supports are capped at medium unless a route is served from their files. A scoped package counts through its scope, so @standard-schema/spec is no evidence for Testing.

Project metadata

  • New project.detectedFrameworks lists every framework with signals. project.frameworks (winner per category, gates route detection) is unchanged. doctor, analyze and .devmap/index.json show the full list; older snapshots fall back to frameworks.

AI

  • Every chat request is aborted after DEVMAP_AI_TIMEOUT_MS (default 120 s). explain, flow and devmap_explain no longer hang; analyze still completes.
  • Domain inference is grounded: a domain that no entity, route or feature supports is ignored with a warning, and features whose only related entities are generic (User, Account, Session) are dropped.
  • The ownership topology is stored in the snapshot (ownership); "Personal app" wording needs single_user_isolated.

Onboarding

  • Domain features lead and supporting ones (analytics, caching, auth) come last, so the headline is no longer the alphabetically first feature.
  • Stack line dedupe, double periods and "application application" are fixed.
  • onboarding --write no longer makes the snapshot stale; an unsupported --language is an error.

Behavior to know about

  • Features supported only by names stay listed at medium rather than being removed. For example Authentication in vue-realworld is now medium: no vendor package and no route is served from its files.
  • README still counts as documentation evidence (existing tests depend on it).
  • The registry does not separate vendor terms from generic words (vitest next to spec); a package named by a generic word still counts.
  • Fingerprints include the DevMap version, so existing .devmap/ snapshots are regenerated only after a version bump. Use analyze --fresh meanwhile.

Verification

  • pnpm test in packages/cli: 588 pass, 0 fail (559 before, 29 added; typecheck included)
  • node packages/cli/test/mcp-smoke.mjs: passes (7 tools)
  • pnpm test:package-e2e: passes
  • Cross-repo comparison on 19 repos against the earlier results: routes, entry points, entities and frameworks are identical everywhere. Differences are only the intended ones: Doc merged into Documentation, astro-paper single-package, detectedFrameworks added, and name-only features at medium (SvelteKit, tRPC, excalidraw, taxonomy, astro-paper, vue-realworld).
  • Performance after the changes: Django 7.1k files 8.1 s, SvelteKit 3.2k files 26 s.

Not in this PR

No version bump, tag or release. CLAUDE.md is synced with the new fields and notes.


Generated by Claude Code

itsflaid and others added 5 commits November 11, 2026 19:04
- Vue SFC: merge <script> and <script setup> so imports from both blocks reach the graph
- Entry points: tooling config files (vitest.config.e2e.ts, app.config.ts) are never entries; Angular's app.config.ts still is
- Framework: next.config/nuxt.config inside examples/ no longer decide the framework
- Features: images and fonts are not evidence for a feature
- Analyzer: skip files with a line over 50k chars (one-line bundles stalled ts-morph for minutes)
- AI: bound every chat request with a timeout (DEVMAP_AI_TIMEOUT_MS, default 120s)
- onboarding: rank features instead of taking the alphabetical first, dedupe the stack line, fix double period, reject unsupported --language
- scanner: ONBOARDING.md written by devmap no longer makes the snapshot stale

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AgTNRa65oer96NSudK8dWf
…ship in the snapshot

- domain/summary that share no word with entities, routes or features are ignored and reported in `warnings`
- AI features that only touch User/Session/Account-style entities are dropped
- `ownership` (from the entity graph) is stored in the snapshot; "Personal app" now needs that evidence instead of being the default

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AgTNRa65oer96NSudK8dWf
…ne name

A page is named after its URL segment (Doc) and a role after the concept
(Documentation), so the same thing was reported twice. featureStem now
aliases doc -> documentation and the merged feature keeps the concept's name.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AgTNRa65oer96NSudK8dWf
…y detected framework

- packages: ['.'] (astro-paper) named the root itself and made the project a monorepo.
- project.frameworks is the per-category winner that gates route detection, so a
  Next.js + Expo + TanStack Start monorepo listed only nextjs. The new optional
  project.detectedFrameworks lists every framework (implied ones such as the React
  inside Next.js are folded away); doctor, analyze and .devmap/index.json show it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AgTNRa65oer96NSudK8dWf
…vocabulary features

D6: a file TypeScript recovered from (parseDiagnostics) is reported at medium, not high.
D7: a registry signal that only a file name or local import supports (no npm package names
it) is capped at medium unless a route is served from its files. A scoped package counts
through its scope, so @standard-schema/spec is no evidence for Testing.

Also syncs CLAUDE.md with the new snapshot fields and engineering notes.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AgTNRa65oer96NSudK8dWf
@vercel

vercel Bot commented Nov 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
devmap-web Ready Ready Preview Nov 12, 2026 3:43am UTC

@github-actions

Copy link
Copy Markdown

✅ Welcome ke DevMap!

Terima kasih sudah buat PR. Pastikan checklist ini terpenuhi sebelum review:

  • devmap doctor lolos (tanpa error)
  • Test pnpm test:cli lolos (semua pass)
  • New commands diupdate di docs/commands.md
  • Tidak ada console.log di command files
  • Registry terms sesuai standar (baca docs/guide/05-signal-registry.md)
  • Code style match dengan CONTRIBUTING.md

CI akan jalan otomatis pada setiap update. Kalau gagal, akan muncul link run di komentar ini.

Kalau DevMap membantu, tolong star ya: https://github.com/itsflaid/devmap

Terima kasih kontribusinya! 🙏

@itsflaid
itsflaid merged commit 63922f6 into main Nov 12, 2026
3 checks passed
@itsflaid
itsflaid deleted the fix/analyzer-audit-0.9.3 branch November 12, 2026 03:44
@itsflaid itsflaid mentioned this pull request Nov 12, 2026

This branch was successfully deployed

1 active deployment
Preview — f6841749 Deployed Nov 12, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants