Commit Graph
163 Commits
Author SHA1 Message Date
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
Lum1104 2545ad2f61 docs: add token reduction plan 2026-03-27 10:53:28 +08:00
Yuxiang LinandGitHub cfa6d71bb1 Merge pull request #45 from Lum1104/feat/theme-system
feat(dashboard): add curated theme preset system with accent customization
2026-03-27 10:20:33 +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
Lum1104 348ba3102d docs: add theme customize design doc and implementation plan 2026-03-27 09:25:58 +08:00
Lum1104 f3bd72bc22 docs: add theme customize design doc and implementation plan 2026-03-26 23:37:08 +08:00
Lum1104 f1f4b43c00 chore: add .worktrees/ to gitignore 2026-03-26 23:17:49 +08:00
Yuxiang LinandGitHub a848f3c9d3 Merge pull request #42 from Lum1104/feat/dashboard-robustness
feat: dashboard robustness — permissive graph loading with user-friendly warnings
2026-03-26 22:10:02 +08:00
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 d861087ba6 docs: add dashboard robustness design and implementation plan
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 12:20:44 +08:00
Yuxiang LinandGitHub 7631935465 Merge pull request #37 from Lum1104/fix/normalize-llm-type-aliases
fix: normalize LLM-generated type aliases before schema validation
v1.2.0
2026-03-25 10:40:47 +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
Yuxiang LinandGitHub 0694163f1a Merge pull request #32 from fishinakleinbottle/feat/language-agnostic-understanding
feat: language-agnostic analysis with dynamic prompt injection
2026-03-24 23:46:55 +08:00
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 01d7ece81d chore: add large graph generator script for perf testing
Generates fake knowledge-graph.json with configurable node count
for testing Web Worker layout performance. Forward-only edges to
avoid dagre stack overflow on cyclic graphs.

Usage: node scripts/generate-large-graph.mjs [nodeCount]

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 20:12:50 +08:00
Lum1104andClaude Opus 4.6 bc9ab3f090 docs: add Gemini CLI and Pi Agent platform support
Add INSTALL.md for Gemini CLI and Pi Agent, and update all four
READMEs (EN, ZH, JA, TR) with install instructions and compatibility
table entries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 18:43:53 +08:00
Yuxiang LinandGitHub 007344e797 Merge pull request #30 from berkcangumusisik/feat/keyboard-shortcuts-and-contributing
Feat/keyboard shortcuts and contributing
2026-03-24 10:19:54 +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
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
AnnulusLabsandClaude Opus 4.6 7bfcba677b fix: move dagre layout to Web Worker for large graphs
Fixes #14 — dashboard becomes unusable with large knowledge graphs (2,700+ nodes).

- Web Worker for dagre layout: graphs above 200 nodes compute layout off the
  main thread via a dedicated Web Worker, keeping the UI responsive
- Request ID correlation: concurrent layout calls are routed by incrementing
  request ID, preventing race conditions where results cross-wire
- Worker error handling: onerror rejects pending promises; GraphView catches
  errors and clears the loading spinner
- Cancellation cleanup: effect cleanup clears layouting state to prevent
  stuck spinners when the graph switches below the async threshold
- Topology/visual split: dagre only re-runs when graph structure changes;
  node selection, tour highlights, and search results are applied as a
  cheap O(n) overlay without triggering relayout
- React.memo on CustomNode: prevents O(n) re-renders when selecting
  individual nodes in large graphs
- Zero overhead for small graphs: below 200 nodes, the original synchronous
  layout path is used unchanged

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 10:37:12 -06:00
Sreeram ae898a28b2 fix: address PR review feedback (C1-C4, I1-I5)
Critical fixes:
- C1: Remove unused treeSitter.nodeTypes from configs and schema — extraction
  logic is TS/JS-specific, nodeTypes gave false impression of generality
- C2+C3: Remove blocking temp dir prompt, default to .understand-anything/tmp/,
  update all 5 prompt templates to use project-local paths instead of /tmp/
- C4: Fix false-positive framework detection — use "next": (with quotes) for
  Next.js, remove cors/body-parser from Express keywords

Important fixes:
- I1: Change FrameworkConfig.language to languages[] array — React/Express/Vue
  now correctly listed under both typescript and javascript
- I2: Fix getByExtension case sensitivity — .TS now resolves same as .ts
- I3: languageKeyFromPath returns null instead of throwing for unknown extensions
- I4: Duplicate framework registration is now a no-op instead of corrupting array
- I5: SKILL.md now says "skip silently" when language/framework snippet not found

Also: getForLanguage returns a defensive copy, 3 new tests added (157 total).
2026-03-23 21:53:02 +05:30
Berkcan GümüşışıkandGitHub 59b755ca46 Merge branch 'Lum1104:main' into feat/keyboard-shortcuts-and-contributing 2026-03-23 15:59:03 +03:00
Berkcan Gümüşışık 5f23a45e3d Update OpenCode instructions in Turkish README
Replace the previous opencode.json example with a directive to fetch and follow the INSTALL.md from the Understand-Anything repo's .opencode path. Also update the OpenCode table entry to indicate "AI güdümlü kurulum" (AI-guided installation). Changes apply to README.tr-TR.md to streamline installation instructions.
2026-03-23 15:54:26 +03:00
Yuxiang LinandGitHub 9805f9fcb3 Merge pull request #13 from Lum1104/feat/language-agnostic-support
feat: language-agnostic support for 12 languages
2026-03-23 20:43:55 +08:00
Yuxiang LinandGitHub b3af2c97b7 Merge pull request #26 from Lum1104/refactor/unify-skills-install
refactor: unify skills install method across all platforms
2026-03-23 20:30:20 +08:00
Sreeram 42074bb210 fix: ask user for temp directory and improve prompt discovery
- Add blocking step in Phase 0 asking where to write temp files
  ($PROJECT_ROOT/.understand-anything/tmp/ or /tmp/), with explicit
  STOP-and-wait language to prevent premature execution
- Make language/framework file discovery explicit in Phase 2 and
  Phase 4 with concrete path examples and ls fallback, fixing
  issue where Claude's Search tool couldn't find files in subdirs
- Clean up $TMP_DIR alongside intermediate files in Phase 7
2026-03-23 15:00:18 +05:30