mirror of
https://github.com/supermemoryai/supermemory.git
synced 2026-10-02 02:11:20 +00:00
The graph had no way to find a specific document or memory once the node
count grew past a screenful. You could pan, zoom, fit, and arrow-key
between neighbours, but locating "the Berlin memory" in a few hundred
nodes meant eyeballing the canvas.
Add a search box to the bottom-left control stack that finds nodes by
text and steps through the matches:
- searchNodes(nodes, query): a pure, case-insensitive substring matcher
over document title/summary/type and memory text/content. Results are
ranked (title/memory prefix, then substring, then supporting copy) with
input order as a stable tiebreaker, so ordering never depends on where
the force simulation happened to drop a node. Exported for advanced use.
- SearchControl: an input styled like the existing navigation controls,
with a live "current/total" counter, prev/next steppers, and a clear
button. Enter / Shift+Enter cycle matches, Escape clears.
- Wiring in MemoryGraph: the focused match is selected and centered
(reusing the same selectAndCenter path as arrow-key navigation), and the
documents behind all matches are highlighted (memory matches highlight
their parent document) by merging into the existing highlightDocumentIds
pipeline. Press "/" to focus the box, consistent with the existing
single-key shortcuts.
The box is on by default; embedders can hide it with showSearch={false}
or relabel it with searchPlaceholder. Existing keyboard handlers already
ignore events originating from inputs, so typing a query never triggers
the fit/zoom/arrow shortcuts.
Tested: 14 new tests (searchNodes ranking/empty-query/null-field cases;
SearchControl typing, Enter/Shift+Enter/Escape, clear, counter, disabled
states). Full package suite green (202 tests), tsc --noEmit clean, biome
clean, vite build succeeds.
|
||
|---|---|---|
| .. | ||
| agent-framework-python | ||
| ai-sdk | ||
| cartesia-sdk-python | ||
| docs-test | ||
| hooks | ||
| lib | ||
| memory-graph | ||
| openai-sdk-python | ||
| pipecat-sdk-python | ||
| tools | ||
| ui | ||
| validation | ||