Skip to content

Claude/lucid archimedes 6xkh25 - #705

Closed
WhoAlwaysZzz wants to merge 79 commits into
Egonex-AI:mainfrom
WhoAlwaysZzz:claude/lucid-archimedes-6xkh25
Closed

WhoAlwaysZzz wants to merge 79 commits into
Egonex-AI:mainfrom
WhoAlwaysZzz:claude/lucid-archimedes-6xkh25

Conversation

@WhoAlwaysZzz

Copy link
Copy Markdown

Summary

Linked issue(s)

How I tested this

  • pnpm lint
  • pnpm --filter @understand-anything/core test
  • pnpm test
  • Manual smoke test (describe above)

Versioning

  • Version bumped in all five manifests, OR
  • N/A — internal/docs-only change

claude added 30 commits October 3, 2026 05:41
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
prism-react-renderer bundles only ~15 grammars, so Java, C#, Ruby, PHP,
shell, TOML, Dockerfiles and friends rendered as plain text. Load the
missing grammars on demand from prismjs/components, resolve the language
from the file path client-side (incl. Dockerfile/Makefile/Gemfile), and
pick a light or dark highlight theme from the active dashboard theme.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Prism emits class names like "token table" (TOML headers, Markdown
tables) that collide with Tailwind's .table utility (display: table),
splitting one source line across several rows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Opening a function or class used to land on line 1 of its file even
though the header said e.g. "Lines 340-380". Scroll the range into view,
and accept an optional target line in openCodeViewer (marked more
strongly) for jumping to a specific line.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Self-contained (Node built-ins only) so the dashboard dev server and the
standalone viewer can share it, like staleness.ts. Searches an allowlist
of project-relative files with literal/regex, case and whole-word
options, skips binary and oversized files, caches file contents by mtime
and caps the result size.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Expose core's content search from the dashboard dev server and mirror it
in the standalone viewer. Only files listed in the knowledge graph are
searched — the same allowlist /file-content.json enforces.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Resolve a (path, line) location to the file node or the innermost
function/class whose lineRange covers the line, tolerant of ./ and
backslash path spellings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
A third search mode next to Fuzzy/Semantic queries /search-content.json
(debounced, cancellable) with match-case / whole-word / regex toggles.
Hits are grouped by file with the matched text marked; choosing one
drills into the file in the graph, selects the innermost node covering
the line and opens the code viewer at that line. Files with hits light
up in the graph like fuzzy results.

The results dropdown now also supports arrow keys + Enter in every mode
and shows up to 10 node results instead of 5. Result counts use a
translated plural instead of appending an English "s".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
annotations.json lives next to the knowledge graph in the data directory,
separate from knowledge-graph.json so /understand never overwrites it.
Includes payload validation, atomic writes and a shared GET/PUT request
handler for the dashboard server and the viewer. A corrupt file is never
reported as empty, so clients can't save over it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
The dashboard dev server reads and writes the data directory's
annotations.json (token-gated, JSON-only PUT). The standalone viewer
keeps its read-only contract: it serves committed annotations but
refuses writes, so viewer edits stay in the browser.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
NodeInfo's Tags section gains removable personal tags with a small "+"
pill, and a one-line "+ Add note" link opens a note editor
(Ctrl+Enter saves, Esc cancels). Annotations persist to the project's
annotations.json through the dashboard server, falling back to this
browser's localStorage when the server is read-only or unreachable.
Personal tags and notes are folded into the fuzzy search index.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
A small accent pencil next to the complexity label shows which nodes
carry your tags or notes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
A collapsed container rendered as an empty box with no affordance. Show a
▸/▾ disclosure marker and a centred "Click to expand" label.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Picking a search result, sidebar link or file-tree entry whose node sits
in a collapsed container only produced a "1 hit" badge. Expand that
container and keep the node centred while the layout settles.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Its amber-100 text is tuned for dark backgrounds and was near-invisible
on the Light Minimal preset; mirror the light override WarningBanner
already gets.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
The slide-up source panel was fixed at 40vh. Drag its top edge to resize
(height remembered per browser, clamped so the graph stays visible);
double-click the edge to return to the default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Layer, selected node, view mode, open code viewer (+ line) and search
live in the hash: a refresh restores where you were, back/forward walk
your navigation (search typing replaces instead of pushing), and a link
can point someone at a specific node. A reloaded graph re-applies the
URL instead of resetting it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
… backgroundColor

React warned when the highlight theme changed while the viewer was open.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
One box for files (fuzzy path match), graph nodes, commands (diff,
filters, export, path finder, personas, themes, detail level, view mode,
copy link, selected-node actions) and a jump into full-text code search.
Works from inside text fields; commands named by the query sort first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Add a tsconfig for server/ (Node types) to the build graph and raise the
app's lib to ES2022 — src/__tests__ imports vite.config, which pulls in
core code using Array.prototype.at.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
/ai/config (GET/PUT) and /ai/chat (POST, Server-Sent Events) behind the
access token. Two protocols reach practically any vendor: OpenAI-compatible
chat/completions (GPT, DeepSeek, GLM, Qwen, Moonshot, OpenRouter, Ollama…)
and the Anthropic Messages API via the official SDK with an optional
custom base URL. On the official Anthropic API with a model that supports
it, server-side refusal fallback is enabled. Settings incl. the API key
live in ~/.understand-anything/ai.json (0600), never in the project, and
the key is never sent back to the browser. Also includes an
OpenAI-compatible embeddings client for semantic search.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
…lder

Browser wrapper for /ai/config and the streaming /ai/chat endpoint,
starting-point presets for common vendors (all fields stay editable),
and a bounded prompt context per node: summary, user notes/tags,
relationships and a line-numbered source excerpt around its range.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
…ator class

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
claude added 29 commits October 3, 2026 07:16
The user's note (plus line notes and tags) becomes each step's
description; functions and classes lead with their file so the tour
navigates to the right layer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
startCustomTour(steps) plays arbitrary steps through the existing
step/next/prev actions; stopTour and startTour clear it, so the
graph's own tour is untouched.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Function, class-name and plain tokens that name a graph node (a
definition in the same file first, then in files this file imports)
get a dotted underline on hover; Ctrl/Cmd+click selects that node and
opens its code at its line range, staying in the expanded modal.
Names resolve once per file against a name index cached per graph.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
…alysis

Breadth-first over reverse dependency edges with shortest depth; edge
direction (incl. tested_by/configures pointing the other way) lives in a
shared helper so impact, rules and review order agree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Selectors are path globs (**, *, ?, {a,b}, plain prefixes) or layer:<id or
name>; functions and classes inherit their file's path and layers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
A collapsible outline lists the graph's function/class nodes inside the
open file (by filePath + lineRange or contains edges), nested by range;
clicking one scrolls to and flashes its first line. Thin bars in the
gutter mark each node's lineRange (hover shows name and lines, click
jumps), with the open node's bar in the accent colour. The outline
toggle is remembered in localStorage.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
The tour's fit-to-highlight waits for every highlighted node to render,
and sub-file nodes are hidden at the default file detail level, so a
function step zoomed out to the whole layer. Highlight its file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Clicking a gutter line number opens a small inline editor (Ctrl/Cmd+Enter
saves, Esc cancels, saving empty deletes). Notes are stored on the file's
node as annotation `lines`, so they show whichever node of the file is
open; lines with a note get an accent dot in the gutter and the note
inline below them (click to edit).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
A "My tour from notes" button (Project overview and Learn panel, shown
once nodes are annotated) opens a builder: filter by personal tag, pick
graph or note-time order, reorder or drop steps, then play it with the
regular tour, the note as each step's text. The palette offers the
builder, one-step "Play my tour: #tag" commands and Exit tour.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
A file counts as read once the code viewer has shown its source. Read
files get a check mark in the Files tab, Project Overview shows an
"N / M files read" bar, and the palette offers "Reset reading
progress".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Obsidian reads [[README.md]] or [[api.ts]] as a link to a file with
that extension, not to the README.md.md / api.ts.md notes we write.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Two new Export menu entries and palette commands download the user's
annotations, built in the browser: one Markdown file, or a zip with an
index note plus one note per annotated node.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo

# Conflicts:
#	understand-anything-plugin/packages/dashboard/src/components/ProjectOverview.tsx
#	understand-anything-plugin/packages/dashboard/src/hooks/usePaletteCommands.ts
#	understand-anything-plugin/packages/dashboard/src/locales/en.ts
#	understand-anything-plugin/packages/dashboard/src/locales/ja.ts
#	understand-anything-plugin/packages/dashboard/src/locales/ko.ts
#	understand-anything-plugin/packages/dashboard/src/locales/ru.ts
#	understand-anything-plugin/packages/dashboard/src/locales/zh-TW.ts
#	understand-anything-plugin/packages/dashboard/src/locales/zh.ts
New `analysis` section in all six locales (hotspots, impact analysis,
architecture rules, PR review).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
… mark map

analysisStore holds the active overlay (hotspots, impact, rules, review)
and derives nodeMarks + markedEdges from it; CustomNode tints/rings marked
nodes (heat scale, impact depth, violations, review state) with theme-aware
tokens, and GraphView highlights marked edges, also on aggregated container
edges. Marked nodes are exempt from selection and diff fading.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
…or for the overlays

Header: Hotspots toggle with 30/90/365-day window, Rules button with a
violation badge, Review button when a diff overlay is loaded. Sidebar:
hottest files, impact list grouped by depth, violations per rule, and the
review walkthrough (next/prev, arrow keys, reviewed checkbox, comment,
progress, copy summary as Markdown; persisted per project + diff in
localStorage). The rules editor saves arch-rules.json, or this browser's
storage on read-only servers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
An Impact button next to Ask AI / Focus toggles the impact overlay for the
node; a churn card shows commits, last change and authors for its file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
… review

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
…review

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo

# Conflicts:
#	understand-anything-plugin/packages/dashboard/src/hooks/usePaletteCommands.ts
#	understand-anything-plugin/packages/dashboard/src/locales/en.ts
#	understand-anything-plugin/packages/dashboard/src/locales/ja.ts
#	understand-anything-plugin/packages/dashboard/src/locales/ko.ts
#	understand-anything-plugin/packages/dashboard/src/locales/ru.ts
#	understand-anything-plugin/packages/dashboard/src/locales/zh-TW.ts
#	understand-anything-plugin/packages/dashboard/src/locales/zh.ts
…CLAUDE.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
…cies

Marketplace installs only see understand-anything-plugin/, so its own
pnpm-lock.yaml must list @anthropic-ai/sdk, @types/node and prismjs for
--frozen-lockfile installs to succeed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Ask AI, saving annotations, semantic search and rule editing only work
on the dev server, so /understand-dashboard now installs and starts it
first and falls back to this fork's prebuilt read-only viewer release.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
spawn('xdg-open') emits an unhandled 'error' on headless Linux and
minimal WSL, which crashed the viewer right after it printed its URL.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S2asCSfqSH4uBLvLdzKJHo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants