Reduced from 40vh to 25vh so the overlay sits closer to the bottom
and leaves more room for graph nodes above.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix all issues from the 5-agent parallel code review of universal file
type support:
- Parser error handling: add console.warn in JSON/YAML catch blocks,
warn on unbalanced braces in Protobuf/Terraform parsers
- Parser correctness: filter .PHONY special targets in Makefile parser,
handle opening brace on next line in Shell parser, fix per-stage
EXPOSE port assignment in Dockerfile parser
- Graph builder: use nodeType-based ID prefix instead of hardcoded
"file:", warn on unknown definition kinds, detect duplicate node IDs
- Type safety: export NodeType alias, add ServiceInfo.lineRange, type
dashboard color maps as Record<NodeType,...>, refactor
getDirectionalLabel to Record<EdgeType,...>, consolidate NodeCategory
- Schema: add StrictLanguageConfigSchema with extensions/filenames
refinement, fix Infrastructure/Schema-Data category comments
- Agent prompts: fix Jenkinsfile language ID (groovy → jenkinsfile),
fix css.md edge type (configures → related), remove shell.md
Makefile cross-reference
- Tests: 20+ new edge case tests across parsers, graph builder,
language registry, and plugin registry
- Documentation: add JSDoc to all 12 parser classes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Expand persona filter in GraphView.tsx to show all 9 file-level node
types (file, config, document, service, table, endpoint, pipeline,
schema, resource) instead of only "file", fixing invisible nodes
- Add serves, provisions, and routes edge types with creation criteria
to file-analyzer-prompt.md
- Fix related edge weight from 0.3 to 0.5 to match SKILL.md default
- Add filenames to openapiConfig for proper filename-based detection
- Add TODO comments to kubernetesConfig and jsonSchemaConfig explaining
content-based detection limitations
- Clarify that module/concept types are reserved for higher-level agents
- Update language-registry tests for 38 built-in configs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Phase 1 (SCAN): Include non-code files in scan, add fileCategory to
batch metadata. Phase 2 (ANALYZE): Add batching strategy for non-code
files, group related infra/data/doc files together, pass fileCategory
per file. Phase 4 (ARCHITECTURE): Inject non-code language snippets
(markdown, yaml, dockerfile, sql, etc.), pass all node types and all
edge types to architecture analyzer. Phase 5 (TOUR): Include non-code
nodes in tour candidate pool, pass all edge types for topology analysis.
Update node type reference table (5 -> 13 types), edge type reference
table (18 -> 26 types), edge weight conventions, and inline validation
script to handle file-level non-code node types for layer coverage.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add language context snippets for markdown, yaml, json, sql, dockerfile,
terraform, graphql, protobuf, shell, html, and css. Each snippet follows
the existing typescript.md/python.md pattern with Key Concepts, Notable
File Patterns, Edge Patterns, and Summary Style sections. These snippets
are injected into the architecture analyzer prompt to improve layer
assignments for non-code files.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add 8 new node types (config, document, service, table, endpoint,
pipeline, schema, resource) to valid type list, bringing total to 13.
Add 8 new edge types (deploys, serves, migrates, documents, provisions,
routes, defines_schema, triggers) to valid type list, bringing total to
26. Add quality checks: config nodes should have configures edges, doc
nodes should have documents edges, service nodes should have deploys
edges, etc. Add node type / ID prefix consistency check. Update layer
coverage to include all file-level node types.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Allow non-code files as tour stops: README.md as step 1, Dockerfile,
SQL migrations, CI configs, and other infrastructure files. Add non-code
file inventory computation to the topology script. Add languageLesson
concepts for Dockerfile (multi-stage builds), SQL (normalization), YAML
(CI/CD triggers), Terraform (state management), GraphQL (type system),
Protobuf (backward compatibility), and Kubernetes (deployments). Update
pedagogical flow to weave non-code stops into the narrative naturally.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add nodeTypeFilters state and toggleNodeTypeFilter action to the Zustand
store, apply category-based filtering in GraphView's useLayerDetailTopology,
and render filter toggle buttons in the App header for Code, Config, Docs,
Infra, and Data categories with colored indicator dots.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Show a categorized count of node types (Code, Config, Docs, Infra, Data)
with colored dots matching node type colors. Only displayed when non-code
nodes are present in the graph.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add typeColors and typeTextColors entries for config, document, service,
table, endpoint, pipeline, schema, and resource node types.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove the code-only file filter so the scanner discovers non-code files
(.md, .yaml, .json, .sql, .tf, Dockerfile, etc.). Add fileCategory field
to each discovered file (code/config/docs/infra/data/script/markup) with
extension-based category detection logic. Expand language detection table
to cover 26+ file types. Infrastructure tooling detection added to
framework detection step.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add colors for config, document, service, table, endpoint, pipeline,
schema, and resource node types to all 5 theme presets (dark-gold,
dark-ocean, dark-forest, dark-rose, light-minimal) and register the
CSS variables in the Tailwind v4 @theme block.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Export all 12 non-code parsers (MarkdownParser, YAMLConfigParser,
JSONConfigParser, TOMLParser, EnvParser, DockerfileParser, SQLParser,
GraphQLParser, ProtobufParser, TerraformParser, MakefileParser,
ShellParser) and the registerAllParsers() helper from core index.
New type exports (SectionInfo, DefinitionInfo, ServiceInfo, etc.)
are already covered by the existing `export * from "./types.js"`.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add addNonCodeFile() and addNonCodeFileWithAnalysis() methods that create
graph nodes with the appropriate non-code types (document, config, service,
table, endpoint, pipeline, schema, resource).
addNonCodeFileWithAnalysis() creates child nodes for definitions, services,
endpoints, steps, and resources with "contains" edges to the parent file.
Add mapKindToNodeType() helper for mapping definition kinds to node types.
Extend EXTENSION_LANGUAGE map with all non-code file extensions.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add regex/parser-based analyzers for: Markdown, YAML, JSON, TOML, Env,
Dockerfile, SQL, GraphQL, Protobuf, Terraform, Makefile, Shell.
Each implements AnalyzerPlugin with analyzeFile() and optional
extractReferences(). Uses `yaml` npm package for YAML parsing,
built-in JSON.parse for JSON, regex for all others.
Add registerAllParsers() helper to register all parsers at once.
Add comprehensive test suite with 35 tests covering all parsers.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Update PluginRegistry.resolveImports() to check for plugin.resolveImports
existence before calling it. Non-code plugins (e.g., markdown, dockerfile)
don't need import resolution, so this method is now optional.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
22-task plan covering core types, schema, parsers, language configs,
agent prompt updates, dashboard visualization, and integration testing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds design document for extending Understand Anything to analyze all
file types (Markdown, Dockerfile, YAML, SQL, Terraform, etc.) — not
just code. Covers 26 new file types, 8 new node types, 8 new edge
types, 12 custom parsers, agent pipeline changes, and dashboard
visualization updates.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Visiting localhost:5173 without ?token= now shows a clean token input
page instead of a broken dashboard. Token is persisted in sessionStorage
so refreshes work within the same browser session.
Bump version to 1.3.1.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Restore topology/visual separation in useLayerDetailGraph to prevent
dagre relayout on every selection/search change (perf regression)
- Remove unused tourHighlightedNodeIds from useOverviewGraph deps
- Remove dead code: showLayers/toggleLayers, zoomToNodeId,
applyDagreLayoutAsync (Web Worker path)
- Replace direct useDashboardStore.setState() in NodeInfo with proper
navigateToHistoryIndex store action
- Fix non-technical persona filter (was no-op due to prior type=file constraint)
- Integrate Escape-to-overview into App keyboard shortcuts (remove
duplicate listener from Breadcrumb)
- Cap nodeHistory at 50 entries to prevent unbounded growth
- Add memo() to LayerClusterNode and PortalNode for render performance
- Make computePortals accept pre-computed aggregation to avoid redundant work
- Restore code viewer popup on node click
- Show NodeInfo above LearnPanel when a node is selected
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Resolve import conflict in persistence/index.ts (keep both PR's path
utilities and main's ProjectConfig/FingerprintStore imports)
- Fix critical bug: App.tsx fetches were missing the ?token= param,
causing 403 on all data endpoints. Extract token from URL and forward
it via tokenUrl() helper.
- Protect /meta.json endpoint with same token auth
- Revert unnecessary saveMeta whitespace reformatting
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- C1: use [...array].sort() to avoid mutating fingerprint inputs
- C2: replace echo piping with here-string to prevent shell injection in hooks
- M1/M2: add allKnownFiles param to classifyUpdate for correct directory baseline
- M3: add try-catch to loadFingerprints for corrupted JSON resilience
- M5: add hasStructuralAnalysis flag for conservative no-tree-sitter classification
- m3: replace fragile sed with node JSON.parse in SessionStart hook
- Add 7 new tests covering all fixes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- --review at same commit hash skips to Phase 6, reuses existing graph
- Same commit hash without flags now asks user what they'd like to do
instead of silently stopping
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Update importCount metric description to reference batchImportData[file.path].length
instead of "number of import statements" (contradicted "do NOT extract imports" rule)
- Fix duplicate /index.js → /index.jsx in impl plan Task 5 extension variants
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>