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>
- Use CSS variables for diff edge colors in GraphView
- Make ReactFlow colorMode respond to theme preset
- Replace hardcoded text-white/bg-gray-900 in LearnPanel
- Use CSS variables for .kbd border and box-shadow
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rename all gold-related CSS custom properties, Tailwind classes,
and keyframe animations from "gold" to "accent" to prepare for
the theme system where the accent color is user-configurable.
- --color-gold -> --color-accent (plus -dim and -bright variants)
- @keyframes goldPulse -> accentPulse
- .animate-gold-pulse -> .animate-accent-pulse
- All text-gold, bg-gold, border-gold, ring-gold Tailwind classes
No behavioral or visual change — pure mechanical rename.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>