The homepage Hero component referenced `/images/hero.png`, but the
actual asset shipped at `homepage/public/images/hero.jpg`. As a result,
https://understand-anything.com/images/hero.png returned HTTP 404 and
the hero background failed to load.
修复:把 homepage/src/components/Hero.astro:7 的 /images/hero.png 改成
/images/hero.jpg,与仓库中实际存在的 homepage/public/images/hero.jpg
对齐,消除站点首页的 404。
Repro:
curl -sI https://understand-anything.com/images/hero.png
# HTTP/2 404
Root cause:
homepage/src/components/Hero.astro:7
<img src="/images/hero.png" ... /> # file does not exist
homepage/public/images/
hero.jpg (182179 bytes) # actual file shipped
Fix:
Single-line: .png -> .jpg in Hero.astro:7. Asset already published,
no binary changes needed. After Pages rebuild, /images/hero.jpg
resolves with HTTP 200.
Bumps all five version-carrying manifests to 2.3.2, bringing
.copilot-plugin/plugin.json back in sync (was stuck at 2.2.0), and
updates CLAUDE.md to reflect the true set of files that must move
together: the nested understand-anything-plugin/.claude-plugin/plugin.json
and .copilot-plugin/plugin.json were missing, and marketplace.json was
incorrectly listed (its plugins[] entry does not support a version field).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds a collapsed "Subscribe to release updates" disclosure below the
Hero CTA row. Default state preserves the existing dark-luxury layout;
clicking expands the Substack embed iframe in place. Uses native
<details> to avoid runtime JS.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Split the single 770 kB dashboard bundle into named vendor chunks and
lazy-load optional views so the initial JS payload is smaller and stays
under Vite's 500 kB warning threshold.
- vite manualChunks: react-vendor, xyflow, graph-layout, markdown
- React.lazy for CodeViewer, LearnPanel, PathFinderModal, KeyboardShortcutsHelp
- PathFinderModal now only mounts while open (was always mounted)
Before: index 769.80 kB (gzip 235.12 kB), chunks-too-large warning.
After: index 205 kB + split vendor/lazy chunks, warning gone.
Fixes#86
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Drops the /Understand-Anything subpath and retargets the site at the
apex custom domain served through GitHub Pages.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Lockfile was missing entries for tree-sitter language parsers
(c-sharp, cpp, go, java, php, python, ruby, rust) that were already
declared in packages/core/package.json.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Previously, PROJECT_ROOT was always set to CWD, which broke on
alternative CLIs (e.g. OpenClaw) that set CWD to their own workspace
directory. Now Phase 0 parses $ARGUMENTS for a non-flag directory path
and uses it as PROJECT_ROOT, falling back to CWD when omitted.
Closes#90
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Handle block-scoped PHP namespaces (`namespace Foo { class Bar {} }`)
by recursing into compound_statement bodies in PhpExtractor
- Separate C (.c/.h) from C++ (.cpp/.cc/.hpp) into distinct language
configs so .c/.h files resolve to language "c" instead of "cpp"
- Add Lua language config so .lua files resolve to "lua" instead of
"unknown" after the EXTENSION_LANGUAGE map was replaced by LanguageRegistry
- Update TreeSitterPlugin JSDoc to reflect all 10 supported languages
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Completes the language extractor architecture — 10 languages with
tree-sitter support (TS, JS, Python, Go, Rust, Java, Ruby, PHP, C/C++, C#).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replaces the LLM-generated throwaway regex scripts in Phase 1 of the
file-analyzer with a deterministic script that uses PluginRegistry
(TreeSitterPlugin + all non-code parsers) from @understand-anything/core.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Handles methods, classes, modules, attr_* properties, require imports,
and call graph including bare identifier calls (no-arg method invocations).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements the LanguageExtractor interface for Go, handling functions,
methods with receivers, structs, interfaces, imports, exports (via
capitalization convention), and call graph extraction. Includes 25 tests.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements the LanguageExtractor interface for Python, extracting functions
(with type annotations, defaults, *args/**kwargs), classes (methods +
annotated properties), imports (plain, from, aliased, wildcard), exports
(top-level defs), and caller-callee call graphs. Includes 31 tests using
the real tree-sitter parser.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extract all TypeScript/JavaScript-specific AST extraction functions
(extractParams, extractReturnType, extractImportSpecifiers, processTopLevelNode,
extractFunction, extractClass, extractVariableDeclarations, extractImport,
processExportStatement, and call graph walking) from TreeSitterPlugin into the
new TypeScriptExtractor class. TreeSitterPlugin now dispatches to registered
LanguageExtractor instances, defaulting to TypeScriptExtractor for backward
compatibility. All 426 existing tests pass unchanged.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
GraphBuilder maintained its own ~60-line extension-to-language mapping that
duplicated and could diverge from the canonical LanguageRegistry. Now delegates
language detection to LanguageRegistry.getForFile(), eliminating the duplication
and ensuring new language configs are automatically picked up everywhere.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
CLI --open overrides server.open config, stripping the token. Remove
--open from CLI and set server.open to /?token= so the browser opens
with the access token already included.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Hero: gradient "Understand" headline, badge pill, staggered entrance animations, star icon for GitHub
- New Problem section: structure vs meaning comparison with hairball SVG and domain preview cards
- Showcase: split into structural (table stakes) and business knowledge (star) with pill labels and feature tags
- Features: 2-column layout with gradient icons and tighter copy
- Install: copy-to-clipboard button
- Footer: expanded with Live Demo link and updated tagline
- Global: rose-gold-to-gold gradient tokens, .grad text utility
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>