- 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>
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.
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.
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>
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>
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>
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.