Commit Graph
89 Commits
Author SHA1 Message Date
Lum1104andClaude Opus 4.6 86be2da691 chore: bump version to 1.3.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 16:45:05 +08:00
Lum1104andClaude Opus 4.6 6fcee67214 fix(dashboard): review fixes for hierarchical navigation PR
- 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>
2026-03-28 16:44:15 +08:00
Lum1104 3cdc2ac71b Merge branch 'main' into pr44/improve-dashboard-ux
# Conflicts:
#	understand-anything-plugin/packages/dashboard/src/components/GraphView.tsx
#	understand-anything-plugin/packages/dashboard/src/components/LayerLegend.tsx
#	understand-anything-plugin/packages/dashboard/src/components/NodeInfo.tsx
2026-03-28 16:20:58 +08:00
Lum1104andClaude Opus 4.6 3fad7207fb merge: resolve conflict with main and fix token auth in dashboard
- 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>
2026-03-28 13:17:59 +08:00
Lum1104andClaude Opus 4.6 39ee76f492 fix: address remaining Copilot review findings
- SKILL.md Phase 7: use core buildFingerprintStore instead of ad-hoc regex script
- change-classifier: accurate FULL_UPDATE reason message (count vs percentage)
- persistence: add saveConfig/loadConfig tests (round-trip, missing, corrupted)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 12:13:22 +08:00
Lum1104andClaude Opus 4.6 5df763fd75 fix: address review findings — sort mutation, injection, directory baseline, error handling
- 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>
2026-03-28 12:11:03 +08:00
Lum1104andClaude Opus 4.6 8c525839b2 merge: resolve SKILL.md conflict — keep both --auto-update and --review flags
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 12:01:57 +08:00
Lum1104andClaude Opus 4.6 867293ebab feat(understand): add review-only path and clarifying prompt for up-to-date graphs
- --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>
2026-03-28 11:55:26 +08:00
Lum1104andClaude Opus 4.6 36e7ad8c6e fix(understand): address PR #47 review — edge types, validator guards, prompt accuracy
- Map Quick Reference edge signals to allowed types (publishes→exports,
  subscribes→depends_on) to resolve contradiction with edge type table
- Restore `name` in Phase 4 payload (architecture-analyzer expects it)
- Add Array.isArray guards for layers/tour in inline validator
- Fix Python import syntax: `import .x` → `from . import x`
- Update Critical Constraints to reference batchFiles/batchImportData

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 11:15:16 +08:00
Lum1104andClaude Opus 4.6 3fb12033d6 fix(understand): address review findings — importCount metric source and plan typo
- 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>
2026-03-28 11:11:49 +08:00
Lum1104andClaude Opus 4.6 a33240180d chore: bump version to 1.2.2
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 17:09:04 +08:00
Lum1104andClaude Opus 4.6 33d4e73e32 perf(understand): wire importMap into batchImportData per batch, increase batch size 5-10→20-30, concurrency 3→5
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 17:09:00 +08:00
Lum1104andClaude Opus 4.6 7dbd89a44b perf(understand): replace allProjectFiles with batchImportData in file-analyzer — import resolution now done by scanner
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 17:08:48 +08:00
Lum1104andClaude Opus 4.6 c8261ff28b perf(understand): extend scanner to pre-resolve imports, output importMap in scan-result.json
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 15:42:36 +08:00
Lum1104andClaude Opus 4.6 67d146033d perf(understand): remove language/framework addendums from Phase 2 batches
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 15:28:55 +08:00
Lum1104andClaude Opus 4.6 1fa84c5959 perf(understand): slim Phase 5 tour payload — file nodes only, imports+calls edges, slim layers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 15:17:55 +08:00
Lum1104andClaude Opus 4.6 e4f7902a22 perf(understand): slim Phase 4 architecture payload — drop redundant node fields
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 14:42:58 +08:00
Lum1104andClaude Opus 4.6 2d86d339c0 perf(understand): gate LLM graph-reviewer behind --review flag, add inline deterministic validation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 14:41:29 +08:00
Lum1104andClaude Opus 4.6 34cfffc4cc fix(dashboard): resolve light theme visual issues from code review
- 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>
2026-03-27 10:02:38 +08:00
Lum1104andClaude Opus 4.6 b4d541b312 feat(dashboard): add light theme CSS overrides and align @theme defaults
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 09:56:15 +08:00
Lum1104andClaude Opus 4.6 17330081ab feat(dashboard): integrate ThemeProvider and ThemePicker into App
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 09:54:11 +08:00
Lum1104andClaude Opus 4.6 2225c86ed6 feat(dashboard): add ThemePicker popover component
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 09:52:08 +08:00
Lum1104andClaude Opus 4.6 35732c67a1 feat(core): add optional theme field to AnalysisMeta
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 09:50:38 +08:00
Lum1104andClaude Opus 4.6 bce59b23b4 feat(dashboard): add ThemeContext with localStorage persistence
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 09:49:26 +08:00
Lum1104andClaude Opus 4.6 6dc260de15 feat(dashboard): add theme engine with CSS variable injection
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 09:48:07 +08:00
Lum1104andClaude Opus 4.6 11428b3441 feat(dashboard): add theme preset definitions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 09:47:06 +08:00
Lum1104andClaude Opus 4.6 eff6f473b1 feat(dashboard): add theme type definitions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 09:37:07 +08:00
Lum1104andClaude Opus 4.6 f7d649043f refactor(dashboard): consolidate hardcoded colors into CSS variables
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 09:34:42 +08:00
Lum1104andClaude Opus 4.6 dde40b8512 refactor(dashboard): rename gold CSS variables to accent
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>
2026-03-27 09:29:44 +08:00
Sreeram ef1f220782 refactor(dashboard): remove swim-lane flow view
The swim-lane layout needs more design work before shipping. Remove the
flow view toggle, useFlowViewGraph hook, applySwimLaneLayout, and
related store/breadcrumb code. Hierarchical lens navigation is retained.
2026-03-27 03:07:30 +05:30
Sreeram 275b9020e3 Merge branch 'main' of https://github.com/Lum1104/Understand-Anything into feat/improve-dashboard-ux 2026-03-27 02:40:21 +05:30
Lum1104 d79e3c862c fix(core): restore validation errors compatibility and reject malformed collections 2026-03-26 22:09:38 +08:00
Lum1104 835377b968 feat(dashboard): surface graph validation issues and add messy graph fixtures
Add a --messy mode to the large graph generator so robustness cases can be
  tested with null fields, aliases, dangling refs, and other malformed data.

  Update the dashboard to preserve non-fatal validation issues, log
  auto-corrected and dropped items, and show a warning banner with expandable
  details plus copy-to-clipboard support.
2026-03-26 20:44:07 +08:00
Lum1104andClaude Opus 4.6 28e3bd1631 feat(core): permissive graph validation with tiered auto-fix pipeline
- Add sanitizeGraph (Tier 1): null cleanup, lowercase enums
- Add autoFixGraph (Tier 2): default missing fields, alias maps, weight coercion
- Rewrite validateGraph: per-item validation, drop broken items, referential integrity
- Add GraphIssue type for structured issue tracking
- Update persistence layer for new ValidationResult API
- 52 schema tests covering all tiers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 16:39:10 +08:00
Lum1104andClaude Opus 4.6 4b22ed7336 test: add alias chain detection guards
Ensures no alias value is itself an alias key, which would cause
single-pass normalization to produce a non-canonical value that
Zod then rejects. Catches this class of bug at test time.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 09:36:18 +08:00
Lum1104andClaude Opus 4.6 fd0df15d1c fix: remove unsafe tests→tested_by alias that inverts edge direction
The "tests" alias silently rewrites to "tested_by" without swapping
source/target, which inverts the relationship meaning and produces
incorrect edges. Direction-inverting aliases should fail validation
so the LLM gets explicit feedback to fix the edge.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 09:33:47 +08:00
Lum1104andClaude Opus 4.6 1a16b0fdd6 fix: normalize LLM-generated type aliases before schema validation
LLMs systematically abbreviate node types (e.g. "func" instead of
"function") and edge types (e.g. "extends" instead of "inherits"),
causing dashboard validation failures. This combines two fixes:

Option A: Rename the ambiguous `func:` ID prefix to `function:` across
all prompts, source code, tests, and example data so LLMs see consistent
naming. Also fix `relates_to` ghost edge type in django.md.

Option B: Add NODE_TYPE_ALIASES and EDGE_TYPE_ALIASES normalization maps
in schema.ts that transparently correct common abbreviations before Zod
validation, as a runtime safety net.

Closes #36

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 09:25:42 +08:00
Sreeram 8fade58812 Merge branch 'main' of github.com:fishinakleinbottle/Understand-Anything into feat/improve-dashboard-ux
# Conflicts:
#	understand-anything-plugin/packages/dashboard/src/App.tsx
#	understand-anything-plugin/packages/dashboard/src/components/GraphView.tsx
#	understand-anything-plugin/packages/dashboard/src/utils/layout.ts
2026-03-25 01:04:41 +05:30
Sreeram 564f7e87c0 feat: lens-based graph navigation with flow view and sidebar history
Replace flat all-nodes-at-once graph with a two-level drill-down:
- Level 1: layer cluster nodes (free-form graph of architectural layers)
- Level 2: file nodes within a layer + portal nodes to adjacent layers
- Breadcrumb navigation with Escape key to go back

Add swim-lane "Flow" view showing all files in columns ordered by
request lifecycle (API → Middleware → Service → Data → etc.) using
dagre for within-lane vertical positioning.

Sidebar improvements:
- Navigation history trail (← Back + clickable breadcrumbs)
- Directional connection labels (imports/imported by, contains/contained in)
- Separate "Defined in this file" section for child classes/functions
- Fix search dropdown overlapping breadcrumbs (z-index)
- Remove redundant CodeViewer auto-open on node click

Layer detector: add External Services and Background Tasks patterns.
2026-03-24 21:19:08 +05:30
Lum1104 c7460f3189 Merge branch 'main' into feat/language-agnostic-understanding 2026-03-24 23:46:13 +08:00
Yuxiang LinandGitHub 684f4f16be Merge pull request #23 from mengdehong/main
fix(dashboard): optimize pan/zoom performance for large graphs
2026-03-24 21:35:13 +08:00
mengdehong b8d88023a5 fix(dashboard): optimize pan/zoom interaction performance
- Widen transition to [box-shadow,outline,opacity,filter] to exclude
  transform (the pan/zoom culprit) while preserving ring animations
  (Tailwind v4 outline) and diff-fade opacity/filter transitions
- Replace inline boxShadow with Tailwind shadow-[] utility so
  .node-glow/.diff-*-glow CSS classes compose correctly
- Disable nodesDraggable, nodesConnectable, edgesFocusable,
  edgesReconnectable, elementsSelectable for read-only visualization
2026-03-24 20:30:56 +08:00
Lum1104 d697aefa53 chore: bump version to 1.2.0 and sync all plugin manifests
- Sync .claude-plugin/plugin.json (was stuck at 1.1.0) and .cursor-plugin/plugin.json (was 1.0.5) to match main version
- Update CLAUDE.md versioning section to list all four files that must be kept in sync
- Document scripts/generate-large-graph.mjs in CLAUDE.md
2026-03-24 20:26:31 +08:00
Yuxiang LinandGitHub ed16da7e12 Merge pull request #18 from AnnulusLabs/fix/large-graph-dashboard-perf
fix: move dagre layout to Web Worker for large graphs
2026-03-24 20:15:43 +08:00
Lum1104andClaude Opus 4.6 cd8cd0fb5c fix: keyboard shortcuts bugs and add shortcut hint
- Fix ? shortcut: add shiftKey: true so it matches on standard keyboards
- Fix Escape: keep hook always enabled so ESC closes the modal
  (remove dead showKeyboardHelp branch, read all state at invocation time)
- Fix formatShortcutKey: don't show redundant ⇧ for shifted punctuation
- Remove stale showKeyboardHelp from useMemo deps
- Add "Press ? for keyboard shortcuts" hint in graph area

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 10:19:31 +08:00
Sai Smruti Ranjan DasandGitHub f9e5f551b5 Update index.ts 2026-03-24 00:55:53 +05:30
Sai Smruti Ranjan DasandGitHub 99bc056c26 Specify host in Vite dev server command
Updated Vite dev server command to specify host.
2026-03-24 00:52:49 +05:30
Sai Smruti Ranjan DasandGitHub f53f3605b4 Implement access token and enhance endpoint security
Added a one-time access token for secure data fetching and improved endpoint protection.
2026-03-24 00:51:25 +05:30
Berkcan Gümüşışık dbd761d72d Merge branch 'feat/keyboard-shortcuts-and-contributing' of https://github.com/berkcangumusisik/Understand-Anything into feat/keyboard-shortcuts-and-contributing 2026-03-23 19:58:34 +03:00
Berkcan Gümüşışık 6723ff3ea5 Refactor keyboard shortcuts; add Turkish README
Use dashboard store state at handler runtime and simplify shortcut wiring to avoid stale closures. App.tsx: replace many useDashboardStore selectors with runtime getState() calls inside keyboard shortcut actions and reduce useMemo dependencies to showKeyboardHelp. KeyboardShortcutsHelp.tsx: remove local Escape key effect (handled globally). useKeyboardShortcuts.ts: ignore shortcuts while typing in inputs/textareas/contentEditable (allow Escape), and improve Mac detection via userAgentData.platform fallback; use the same isMac flag in formatShortcutKey. README (zh-CN & ja-JP): add link to Turkish README (README.tr-TR.md).
2026-03-23 19:58:29 +03:00