Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
292 commits
Select commit Hold shift + click to select a range
7f2c563
fix(test): cancel-probe tools updated to the real ingest_traces contract
DeusData Aug 27, 2026
0b736b2
fix(test): retire the last stub-era ingest probes; unfork the cypher …
DeusData Aug 27, 2026
c6105c5
feat(ui): who can help — authorship as evidence, never a scoreboard
DeusData Aug 27, 2026
007a46b
feat(ui): content-i18n — the wiki, questions, and Atlas cards speak C…
DeusData Aug 27, 2026
762fbe2
feat(ui): the Who-can-help card — contacts with evidence on every symbol
DeusData Aug 27, 2026
77eb7eb
fix(mcp): tell the truth about pre-publication index aborts
DeusData Aug 28, 2026
675b955
feat(ui): chrome-string i18n sweep — Symbol, Flows, Overview, WikiPanel
DeusData Aug 28, 2026
32e910a
fix(watcher): FILETIME-precision dirty signatures; flaky-family rebuilds
DeusData Aug 28, 2026
bda4608
feat(ui): computed sentences compose natively per locale
DeusData Aug 28, 2026
67e39d1
feat(ui): replace graph-ui with CodeAtlasWeb by Bernhard Jackiewicz
DeusData Sep 5, 2026
62af5b8
feat(ui): wire CodeAtlasWeb into the build, the dev-proxy contract an…
DeusData Sep 5, 2026
c8661d7
feat(ui): projects panel keeps indexing, ADR editing and server views…
DeusData Sep 5, 2026
722a242
docs(ui): CodeAtlasWeb proof artifacts, verbatim
DeusData Sep 5, 2026
f490238
ci(ui): test-ui lane gates CodeAtlasWeb; docs describe the new Atlas
DeusData Sep 5, 2026
453d6cc
ci(ui): the CodeAtlasWeb leg is one canonical script, here and in CI
DeusData Sep 5, 2026
61d9e12
docs: README screenshot shows CodeAtlasWeb
DeusData Sep 6, 2026
da7235a
Merge origin/main into feat/atlas-r1
DeusData Sep 6, 2026
a44732b
fix(ui): keep the UI security audit green on the Atlas branch
DeusData Sep 6, 2026
7cd5c93
Merge feat/atlas-r1 (current with main) into feat/codeatlas-web
DeusData Sep 6, 2026
6928c8a
fix(ui): read the lean-contract footer lines in CodeAtlasWeb's compac…
DeusData Sep 6, 2026
a338c1c
fix(ui): the reader asks for full source and pages through long files
DeusData Sep 6, 2026
9dc882a
feat(ui): frontend log file, written by the page and served by the se…
DeusData Sep 7, 2026
0fe968a
fix(ui): the reader announces a file it cannot show, where it is tested
DeusData Sep 7, 2026
a47e0da
feat(ui): graph exploration workspaces with local browser chat
DeusData Sep 8, 2026
0cc163e
fix(ui): restore project switching and expand explorer graph
DeusData Sep 9, 2026
f9ba36e
feat(ui): replace semantic twin with selected code inspector
DeusData Sep 9, 2026
80f4f41
Merge CodeAtlas logging with the exploration frontend
DeusData Sep 9, 2026
4372d9f
feat(ui): integrate repository evidence and change analysis on one da…
BernhardJackiewicz Sep 9, 2026
0b47b7f
docs(ui): hand off PR 2068 repairs with browser evidence and known li…
BernhardJackiewicz Sep 9, 2026
79c3703
feat(ui): add 3D architecture and route exploration
DeusData Sep 10, 2026
d0f148b
feat(ui): expand architecture exploration and streamline workspaces
DeusData Sep 13, 2026
31cb564
fix(ui): hide inactive Explorer explanation tray
DeusData Sep 13, 2026
4ff6fee
feat(ui): add project indexing and editable architecture decisions
DeusData Sep 13, 2026
ea931e7
feat(ui): refine graph exploration and add local agent configuration
DeusData Sep 28, 2026
50a6a67
Streamline local agent controls and preserve proactive chat
DeusData Oct 1, 2026
92224c4
docs(ui): reproduce the review call feedback and plan the fixes
BernhardJackiewicz Oct 2, 2026
6a9a9d0
fix(ui): open node and symbol scopes one layer deep
BernhardJackiewicz Oct 2, 2026
2bc10e1
fix(ui): keep Selection details inside the galaxy stage
BernhardJackiewicz Oct 2, 2026
6e400a3
fix(ui): zoom the architecture scenes toward the cursor
BernhardJackiewicz Oct 2, 2026
e341a49
fix(ui): keep the galaxy canvas mounted while a scope re-lays out
BernhardJackiewicz Oct 2, 2026
0b03df4
fix(ui): zoom the galaxy toward the cursor
BernhardJackiewicz Oct 2, 2026
e46f376
fix(ui): say why the system structure is empty
BernhardJackiewicz Oct 2, 2026
c3fe308
fix(ui): describe Galaxy selections to the local agent as readable facts
BernhardJackiewicz Oct 2, 2026
69b2ac6
fix(ui): send trace_path direction and depth in the server's vocabulary
BernhardJackiewicz Oct 2, 2026
447e2d9
fix(ui): take scoped hierarchy hops from the discovered levels
BernhardJackiewicz Oct 2, 2026
b38ba08
fix(ui): answer caller and callee questions from the loaded graph
BernhardJackiewicz Oct 2, 2026
ef67255
fix(ui): frame the next scope picture along the kept view direction
BernhardJackiewicz Oct 2, 2026
0fb9504
fix(ui): reuse selection explanations and wait for complete scopes
BernhardJackiewicz Oct 2, 2026
0e8b2c1
fix(ui): keep the galaxy root pinned, marked and framed
BernhardJackiewicz Oct 2, 2026
41f7383
fix(store): bound the overview entries so Django-sized graphs render
BernhardJackiewicz Oct 2, 2026
9e27ae3
feat(ui): set and keep local agent token limits per model
BernhardJackiewicz Oct 2, 2026
369e999
feat(ui): show the local agent as a robot with a status lamp
BernhardJackiewicz Oct 2, 2026
080c79f
feat(ui): add a path and call order view to the scoped galaxy
BernhardJackiewicz Oct 2, 2026
db4c441
style(ui): replace long dashes in the browser agent code
BernhardJackiewicz Oct 2, 2026
8961287
fix(ui): offer flow entries when Behavior has no entry points
BernhardJackiewicz Oct 2, 2026
4cb8d6d
fix(ui): rank path targets by name and name the active step
BernhardJackiewicz Oct 2, 2026
01cc2c0
fix(ui): keep the scoped galaxy toolbar on one row
BernhardJackiewicz Oct 2, 2026
648daf7
fix(store): classify Python test files by name in the architecture pr…
BernhardJackiewicz Oct 2, 2026
2e0b8ea
fix(ui): keep the architecture overview readable inside large areas
BernhardJackiewicz Oct 2, 2026
b2d75ce
feat(ui): group endpoints and hide test routes in Routes
BernhardJackiewicz Oct 2, 2026
1c36129
fix(store): count route handlers as architecture entry points
BernhardJackiewicz Oct 2, 2026
016861e
chore(ui): clear the style gate hits outside the chat surfaces
BernhardJackiewicz Oct 2, 2026
d74fc71
fix(ui): count an answer that ends on its last allowed token as finished
BernhardJackiewicz Oct 2, 2026
d53b008
fix(ui): keep large Galaxy scopes whole for the local agent
BernhardJackiewicz Oct 2, 2026
ebef3d7
fix(ui): drop a stale galaxy path and leave Escape to overlays and fi…
BernhardJackiewicz Oct 2, 2026
ee5d4e8
fix(ui): list callers only for the selected symbol and only on list q…
BernhardJackiewicz Oct 2, 2026
37fd34b
fix(ui): keep the placeholder picture out of galaxy filters and counts
BernhardJackiewicz Oct 2, 2026
0f202d7
fix(ui): release the local agent when another tab picks another model
BernhardJackiewicz Oct 2, 2026
fdb8142
fix(ui): let the input limit decide how much evidence a question carries
BernhardJackiewicz Oct 2, 2026
62257fd
fix(ui): retire a cached explanation when its scope's evidence changed
BernhardJackiewicz Oct 2, 2026
9b26e19
fix(ui): treat a nested test package as product code in Routes
BernhardJackiewicz Oct 2, 2026
3ae2aa4
fix(ui): show exactly a route group's routes when it is opened
BernhardJackiewicz Oct 2, 2026
b504f0a
fix(ui): keep neighbouring architecture labels off each other's text
BernhardJackiewicz Oct 2, 2026
9bb07f5
test(ui): guard the scope heights and cursor zoom of the architecture…
BernhardJackiewicz Oct 2, 2026
6c1337b
fix(ui): give the add-index entry its own catalog keys
BernhardJackiewicz Oct 2, 2026
7c81674
fix(store): skip test-registered routes and rank indexed entry points…
BernhardJackiewicz Oct 2, 2026
7c7dce8
fix(store): give every overview group its share of listed entries
BernhardJackiewicz Oct 2, 2026
028b341
fix(store): keep a top-level test/ directory as a test signal for Python
BernhardJackiewicz Oct 2, 2026
9d6a5c8
style(store): split a declaration and name the entry point passes
BernhardJackiewicz Oct 2, 2026
971b223
Merge call-feedback stream: backend (C): architecture projection budg…
BernhardJackiewicz Oct 2, 2026
6a3001a
Merge call-feedback stream: architecture views, routes and style gate…
BernhardJackiewicz Oct 2, 2026
9931199
Merge call-feedback stream: galaxy scope stability, root framing and …
BernhardJackiewicz Oct 2, 2026
41b1e3e
Merge call-feedback stream: local agent evidence, answers, limits and…
BernhardJackiewicz Oct 2, 2026
da9d5c2
style(store): brace the new projection branches and classify nodes once
BernhardJackiewicz Oct 2, 2026
c970c04
fix(ui): keep the whole graph on screen while the first scope picture…
BernhardJackiewicz Oct 2, 2026
82a761f
fix(ui): add ranked flows to a short Behavior start list
BernhardJackiewicz Oct 2, 2026
70e0513
fix(ui): show percent-encoded route paths as people read them
BernhardJackiewicz Oct 2, 2026
e4bb705
test(ui): accept the call-feedback fixes with measured browser checks
BernhardJackiewicz Oct 2, 2026
dd336e5
chore(ui): record the green style gate and promise scan
BernhardJackiewicz Oct 2, 2026
f14674e
docs(ui): record the implementation and acceptance of the call feedback
BernhardJackiewicz Oct 2, 2026
a2bcaaf
fix(ui): wrap long lines in the expanded chat source block
BernhardJackiewicz Oct 3, 2026
2651fbc
fix(ui): head explanation evidence with words instead of numbered ids
BernhardJackiewicz Oct 3, 2026
7bc0e70
fix(ui): explain a cut answer and offer the way to a longer one
BernhardJackiewicz Oct 3, 2026
fb9b9d3
fix(ui): recognize caller questions with typos and offer unsure ones
BernhardJackiewicz Oct 3, 2026
80b8f79
feat(ui): add Galaxy back and forward and keep the scope on empty clicks
BernhardJackiewicz Oct 3, 2026
08cff6a
fix(ui): answer a question without context instead of asking the model
BernhardJackiewicz Oct 3, 2026
fbed70a
fix(ui): keep earlier answers about another file or selection out of …
BernhardJackiewicz Oct 3, 2026
a436eac
fix(ui): load deep Galaxy layers in large pages, show progress, allow…
BernhardJackiewicz Oct 3, 2026
3f29dc5
fix(ui): name the shown operation in the Behavior Start field
BernhardJackiewicz Oct 3, 2026
127db22
fix(ui): tell a project without deployment files from a read error
BernhardJackiewicz Oct 3, 2026
1999aab
fix(ui): show the part that tells similar route labels apart
BernhardJackiewicz Oct 3, 2026
d2f0826
fix(ui): record a repeated log message once per session with a count
BernhardJackiewicz Oct 3, 2026
196daaa
fix(ui): draw every Architecture scene in the green of the IDE
BernhardJackiewicz Oct 3, 2026
cbeed8b
fix(ui): keep the scoped Galaxy toolbar to one row with the chat open
BernhardJackiewicz Oct 3, 2026
ca9382d
fix(ui): keep folder and lane names clear of the map chips
BernhardJackiewicz Oct 3, 2026
371c271
fix(ui): name every Behavior call box and count the same calls
BernhardJackiewicz Oct 3, 2026
495e27a
fix(ui): show the loaded scope's relationships in Galaxy selection de…
BernhardJackiewicz Oct 3, 2026
0e95796
test(ui): check the Architecture and log fixes of the hand test in a …
BernhardJackiewicz Oct 3, 2026
c13c160
fix(ui): ground automatic explanations in listed facts and the symbol…
BernhardJackiewicz Oct 3, 2026
1ed66ce
fix(ui): frame a shown Galaxy path and keep its edge labels off node …
BernhardJackiewicz Oct 3, 2026
67c1015
fix(ui): bind Explore answers to the open file and say what kind it is
BernhardJackiewicz Oct 3, 2026
86af069
fix(ui): lay out the Galaxy scope hierarchy left, centre and right
BernhardJackiewicz Oct 3, 2026
95a3315
fix(ui): keep the agent across reloads and project switches from the …
BernhardJackiewicz Oct 3, 2026
96fbec6
fix(ui): make cancelling a Galaxy layer a step back in the history
BernhardJackiewicz Oct 3, 2026
d7ea48a
fix(ui): keep the configuration header in view at the output limit
BernhardJackiewicz Oct 3, 2026
6d75139
docs(ui): record the cancel and empty-canvas rules of the Galaxy history
BernhardJackiewicz Oct 3, 2026
0c84b05
fix(ui): resume the agent once per page after a project switch
BernhardJackiewicz Oct 3, 2026
f8757fa
fix(ui): word the no-context reply as a state, not a promise
BernhardJackiewicz Oct 3, 2026
3d214f5
fix(ui): read a stored chat topic defensively
BernhardJackiewicz Oct 3, 2026
ad1805d
fix(ui): keep a large finished Galaxy layer as an arranged cloud
BernhardJackiewicz Oct 3, 2026
b5c9f57
fix(ui): count only identical log entries and keep a count beside its…
BernhardJackiewicz Oct 3, 2026
f84638b
fix(ui): show the read source under a listed answer too
BernhardJackiewicz Oct 3, 2026
abee052
fix(ui): space the buttons under a suggested relationship answer
BernhardJackiewicz Oct 3, 2026
b838e20
test(ui): browser checks for the chat items of the hand test
BernhardJackiewicz Oct 3, 2026
64c1916
fix(ui): name a Behavior start that calls itself instead of counting it
BernhardJackiewicz Oct 3, 2026
a644d8c
fix(ui): keep folder names in place while the pointer moves over chips
BernhardJackiewicz Oct 3, 2026
f0bbaf1
fix(ui): show the differing end of routes with a long shared start
BernhardJackiewicz Oct 3, 2026
8c3491f
fix(ui): drop the prompt capacity note from a card with listed facts
BernhardJackiewicz Oct 3, 2026
112abd4
fix(ui): draw Behavior and Service map calls in the green of the scheme
BernhardJackiewicz Oct 3, 2026
8079aff
fix(tools): skip the style gate's committed report when it writes els…
BernhardJackiewicz Oct 3, 2026
d173178
fix(ui): keep the Galaxy selection on Back and cancel to the same root
BernhardJackiewicz Oct 3, 2026
a2e140f
fix(ui): name the Galaxy history group and the root source button
BernhardJackiewicz Oct 3, 2026
ec5fa40
fix(ui): name the real last line of a file in the source pager
BernhardJackiewicz Oct 3, 2026
15562c4
fix(ui): let a hovered chip keep its size so its neighbours stay
BernhardJackiewicz Oct 3, 2026
067e5ca
test(ui): check the review fixes of the hand test in a browser
BernhardJackiewicz Oct 3, 2026
284937d
fix(ui): count Galaxy layer progress per page and warn on hubs early
BernhardJackiewicz Oct 3, 2026
b7ee993
fix(ui): start a returning file or selection fresh in the chat prompt
BernhardJackiewicz Oct 3, 2026
3620691
fix(ui): read the symbol source for a listed answer and its model que…
BernhardJackiewicz Oct 3, 2026
e43a777
fix(ui): fit the scoped Galaxy toolbar by measuring instead of clipping
BernhardJackiewicz Oct 3, 2026
59a717a
fix(ui): read the direction of an unsure call question after the whol…
BernhardJackiewicz Oct 3, 2026
76ad98f
fix(ui): offer the choices under a German suggestion in German
BernhardJackiewicz Oct 3, 2026
55ebda4
fix(ui): count the jobs, triggers and actions of an open workflow file
BernhardJackiewicz Oct 3, 2026
169f6a5
fix(ui): name the function each Behavior call reaches in its facts
BernhardJackiewicz Oct 3, 2026
76fb819
fix(ui): keep names in a two-layer Galaxy hierarchy and tidy its edge…
BernhardJackiewicz Oct 3, 2026
b434037
fix(ui): shorten "All graph" in a narrow scoped Galaxy toolbar
BernhardJackiewicz Oct 3, 2026
4cf470b
test(ui): browser checks for the review findings on the chat items
BernhardJackiewicz Oct 3, 2026
cf0bd5e
Merge hand-test fixes: architecture views, colours, labels and log co…
BernhardJackiewicz Oct 3, 2026
5d13cec
Merge hand-test fixes: galaxy history, layers, toolbar, hierarchy and…
BernhardJackiewicz Oct 3, 2026
5282faa
Merge hand-test fixes: local agent grounding, context and lifecycle (…
BernhardJackiewicz Oct 3, 2026
c5c2a2d
fix(ui): say test routes are being checked while route evidence loads
BernhardJackiewicz Oct 3, 2026
844d412
test(ui): accept grounded explanations and wait for route evidence
BernhardJackiewicz Oct 3, 2026
9901f97
feat(ui): Architecture back and forward on the shared history (K27)
BernhardJackiewicz Oct 3, 2026
d354983
test(ui): browser check for Architecture back and forward (K27)
BernhardJackiewicz Oct 3, 2026
8e6edc8
fix(ui): keep Architecture cameras and call-chain position in the his…
BernhardJackiewicz Oct 3, 2026
e617e70
test(ui): browser check for Architecture cameras, call chain and type…
BernhardJackiewicz Oct 3, 2026
80dd23d
Merge hand-test fix: Architecture back and forward on the shared hist…
BernhardJackiewicz Oct 3, 2026
3b909a0
fix(ui): switch projects in the page and keep the loaded agent (K24)
BernhardJackiewicz Oct 3, 2026
ecf8618
fix(ui): offer the selection for a misspelled caller question and rea…
BernhardJackiewicz Oct 3, 2026
c46b3b2
fix(ui): explain configuration and text files by their facts only (K12)
BernhardJackiewicz Oct 3, 2026
a3224f7
fix(ui): describe an opened Architecture area with nothing selected (K7)
BernhardJackiewicz Oct 3, 2026
090cf0d
fix(ui): name the input limit in the note under a cut automatic expla…
BernhardJackiewicz Oct 3, 2026
1a60ba8
test(ui): browser checks for the in-page project switch and the chat …
BernhardJackiewicz Oct 3, 2026
2e6db07
fix(ui): end the source pager at the file's real last line (K13)
BernhardJackiewicz Oct 3, 2026
90de513
test(ui): acceptance G7 also measures the toolbar with the chat open …
BernhardJackiewicz Oct 3, 2026
33c3098
fix(ui): keep the root names in the Explore mini-Galaxy apart (K12)
BernhardJackiewicz Oct 3, 2026
bd02f3f
fix(ui): keep a Galaxy hierarchy truthful from two layers on (K5)
BernhardJackiewicz Oct 3, 2026
7e73441
feat(ui): spell out Back and Forward while the Galaxy toolbar has roo…
BernhardJackiewicz Oct 3, 2026
b864f93
test(ui): browser checks for the Galaxy completeness gaps (K2, K3, K5…
BernhardJackiewicz Oct 3, 2026
701ac90
fix(ui): count a YAML list of mappings as a list in the file facts (K12)
BernhardJackiewicz Oct 3, 2026
83c6220
fix(ui): count the parts outside an opened area in its card (K7)
BernhardJackiewicz Oct 3, 2026
0bb4c37
fix(ui): post each log line under the page it was written on (K24)
BernhardJackiewicz Oct 3, 2026
f2f30e8
fix(ui): keep the download progress across a project switch (K24)
BernhardJackiewicz Oct 3, 2026
b824b34
test(ui): browser checks for the K24 switch situations and the YAML f…
BernhardJackiewicz Oct 4, 2026
035ebe5
Merge completeness fixes: galaxy completeness gaps (K2, K3, K5, K12, …
BernhardJackiewicz Oct 4, 2026
04255f6
Merge completeness fixes: chat, agent and in-page project switch gaps…
BernhardJackiewicz Oct 4, 2026
ea8c623
test(ui): measure the typed-then-Back window inside the page (K27)
BernhardJackiewicz Oct 4, 2026
6bd3bef
docs(ui): record the hand test round K1 to K28 and its checks
BernhardJackiewicz Oct 4, 2026
1d4c4ad
test(ui): run the acceptance and architecture checks without a window
BernhardJackiewicz Oct 4, 2026
a93edb2
fix(ui): hide Change the output limit when the limit is at its maximu…
BernhardJackiewicz Oct 4, 2026
81e470b
fix(ui): keep Galaxy scene labels below its overlay panels
BernhardJackiewicz Oct 4, 2026
26bfbf5
fix(ui): compare named identifiers with the given text case-insensiti…
BernhardJackiewicz Oct 4, 2026
397b5dc
fix(ui): put Architecture Back and Forward first, as in Galaxy, and c…
BernhardJackiewicz Oct 4, 2026
03bbf2c
fix(ui): tell the chat when a Galaxy layer stopped at the render limi…
BernhardJackiewicz Oct 4, 2026
7b19d3c
fix(ui): list callers apart from other incoming relationships, with r…
BernhardJackiewicz Oct 4, 2026
5046bd2
fix(ui): ask the local model to answer in the language of the questio…
BernhardJackiewicz Oct 4, 2026
91d47cb
fix(ui): make the Architecture Refresh buttons say what they did (A3)
BernhardJackiewicz Oct 4, 2026
282df0a
fix(ui): keep path labels off the hierarchy band title
BernhardJackiewicz Oct 4, 2026
57090cb
fix(ui): let tooltips ignore fields of closed menus
BernhardJackiewicz Oct 4, 2026
3d51f86
fix(ui): make the Expand +1 warning true and show it at once
BernhardJackiewicz Oct 4, 2026
edf2417
fix(ui): make the Behavior start list findable: suggestions, alphabet…
BernhardJackiewicz Oct 4, 2026
1d861f6
fix(ui): answer general questions, empty prompts and file questions w…
BernhardJackiewicz Oct 4, 2026
7c02114
fix(ui): keep the workspace in the address on a project switch (A5)
BernhardJackiewicz Oct 4, 2026
0db6836
fix(ui): read a single unnamed list item of a configuration file with…
BernhardJackiewicz Oct 4, 2026
63e2f40
test(ui): expect file questions answered from the file in the chat ch…
BernhardJackiewicz Oct 4, 2026
bc7433a
Merge second hand test fixes: Galaxy labels, hierarchy band title, Ex…
BernhardJackiewicz Oct 4, 2026
6002e39
Merge second hand test fixes: Architecture navigation, Recent menus, …
BernhardJackiewicz Oct 4, 2026
789b18d
Merge second hand test fixes: chat facts, listed answers, name check,…
BernhardJackiewicz Oct 4, 2026
dc931f7
fix(ui): state that a selection's symbols are outside the loaded scope
BernhardJackiewicz Oct 4, 2026
27d0081
fix(ui): say in the chat how a layer stops at the render limit
BernhardJackiewicz Oct 4, 2026
a1059d9
fix(ui): call a finished scope fully loaded
BernhardJackiewicz Oct 4, 2026
a3432f8
fix(ui): keep the listed answer when the model is asked about it
BernhardJackiewicz Oct 4, 2026
9d6e69f
fix(ui): write relationship counts with their units
BernhardJackiewicz Oct 4, 2026
1b696ea
fix(ui): read "test" as a prompt without a question in any open file
BernhardJackiewicz Oct 4, 2026
a2fe871
fix(ui): head a listed answer with the callers it lists
BernhardJackiewicz Oct 4, 2026
c395bd5
fix(ui): say "Back to" and send a returned topic's own earlier turns
BernhardJackiewicz Oct 4, 2026
94ac121
fix(ui): say why the model sentence was left out
BernhardJackiewicz Oct 4, 2026
17ec5b8
fix(ui): paint the Galaxy overlays opaque so no scene label shows thr…
BernhardJackiewicz Oct 4, 2026
68dcdef
fix(ui): offer only what helps in the token limit note
BernhardJackiewicz Oct 4, 2026
4ba4d5a
fix(ui): flag only real names in the unknown names note
BernhardJackiewicz Oct 4, 2026
30d4d6a
fix(ui): outline INI files and say what well-known files are for
BernhardJackiewicz Oct 4, 2026
a5f3df2
fix(ui): keep German answers German and name the Galaxy controls
BernhardJackiewicz Oct 4, 2026
011f414
fix(ui): show the node hover card above the Galaxy panels
BernhardJackiewicz Oct 4, 2026
7763909
fix(ui): smooth the German chat wording and fit examples to the kind
BernhardJackiewicz Oct 4, 2026
da5751a
fix(ui): say what the selected code declares in grounded answers
BernhardJackiewicz Oct 4, 2026
6980f6d
fix(ui): leave out a path label that finds no free spot
BernhardJackiewicz Oct 4, 2026
1555765
fix(ui): write the Architecture card plainly and with one number format
BernhardJackiewicz Oct 4, 2026
ef95339
fix(ui): say why Expand +1 is blocked while a layer loads
BernhardJackiewicz Oct 4, 2026
376e106
fix(ui): answer general questions about code files from the file
BernhardJackiewicz Oct 4, 2026
0c79dd2
fix(ui): keep the Architecture subtab row in one place in every subtab
BernhardJackiewicz Oct 4, 2026
ddf7c70
fix(ui): show the current Behavior start apart when the filter misses it
BernhardJackiewicz Oct 4, 2026
0596fb1
fix(ui): take the Fit map label of both maps from the Architecture st…
BernhardJackiewicz Oct 4, 2026
42e4361
fix(ui): make the other Refresh buttons say what they did
BernhardJackiewicz Oct 4, 2026
7b6d2cf
fix(ui): wrap long lines of code blocks in chat answers
BernhardJackiewicz Oct 4, 2026
baf10f9
fix(ui): keep the chat's own notes and code lines out of the model hi…
BernhardJackiewicz Oct 4, 2026
be62214
fix(ui): read TOML arrays that run over several lines in the outline
BernhardJackiewicz Oct 4, 2026
424dbb9
Merge third round: opaque Galaxy panels, hover card, path labels, Exp…
BernhardJackiewicz Oct 4, 2026
b5a927a
Merge third round: chat keeps listed answers, code facts in grounded …
BernhardJackiewicz Oct 4, 2026
234e0f2
Merge third round: chat wording, counts with units, render limit sent…
BernhardJackiewicz Oct 4, 2026
8c48d58
docs(ui): record the second hand test round K29 to K44 and its checks
BernhardJackiewicz Oct 4, 2026
e868781
fix(ui): answer questions about the Galaxy view from its scope and ca…
BernhardJackiewicz Oct 4, 2026
7ad29a1
fix(ui): name Branch nodes for what they are and keep the ring note b…
BernhardJackiewicz Oct 4, 2026
df3d3d0
Merge hand test fix: name Branch nodes for what they are, keep the ri…
BernhardJackiewicz Oct 4, 2026
edbf36e
Merge hand test fix: answer questions about the Galaxy view from its …
BernhardJackiewicz Oct 4, 2026
652332e
fix(ui): read every footer of a search answer
BernhardJackiewicz Oct 4, 2026
ab4d61d
docs(ui): record the third hand test K45 to K49
BernhardJackiewicz Oct 4, 2026
ff3e88b
fix(ui): name the branch node in view answers and a folder by its path
BernhardJackiewicz Oct 4, 2026
0f9340d
fix(ui): rank a search hit by its name in the index too
BernhardJackiewicz Oct 4, 2026
5a75016
fix(ui): name the branch node in German answers as the Galaxy label does
BernhardJackiewicz Oct 4, 2026
94645e6
docs(ui): add the last checks of the third hand test
BernhardJackiewicz Oct 5, 2026
7cfc1b8
Fix integration regressions in agent handover and graph scope
DeusData Oct 7, 2026
b0b0ffd
Polish CBM Lens Beta branding and architecture navigation
DeusData Oct 11, 2026
afeaca0
Complete child-local environments and ObjectScript parse deadlines
DeusData Oct 11, 2026
0392068
Merge main into CBM Lens Beta
DeusData Oct 11, 2026
08e0474
Harden CBM Lens integration against current main
DeusData Oct 11, 2026
fa05e11
Tidy Lens documentation and remove development artifacts
DeusData Oct 11, 2026
cf41bdc
Secure Lens history reads and verify shipped browser dependencies
DeusData Oct 11, 2026
1a07304
Audit all Lens source URLs with scoped fixture exceptions
DeusData Oct 11, 2026
5ff46cd
Fix Lens configuration lint diagnostics
DeusData Oct 11, 2026
a19d7a4
Use memory core for Lens response ownership
DeusData Oct 11, 2026
e22c973
Use the current Bash in subprocess audit fixtures
DeusData Oct 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 6 additions & 2 deletions .github/workflows/_security.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,13 @@ jobs:
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: "Layer 1: Static allow-list audit"
run: scripts/security-audit.sh
run: |
bash tests/test_security_audit_subprocess_calls.sh
scripts/security-audit.sh
- name: "Layer 6: UI security audit"
run: scripts/security-ui.sh
run: |
bash tests/test_security_ui_urls.sh
scripts/security-ui.sh
- name: "Layer 8: Vendored dependency integrity"
run: scripts/security-vendored.sh

Expand Down
22 changes: 22 additions & 0 deletions .github/workflows/_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,28 @@ jobs:
shell: bash
run: scripts/ci/test-package-wrappers.sh

# CodeAtlasWeb (graph-ui) leg: the frontend's own vitest suite (2000+
# tests; the render tests run under jsdom), its hardcoded-string and
# promise scans, its portable frozen acceptance checks, and a production
# build with the same npm ci the product build runs. One canonical script
# (scripts/ci/test-ui.sh) is the whole leg, here and locally. No browser
# is downloaded: the browser proofs (graph-ui/tools/smoke-*.mjs) need a
# running server and Playwright browsers, and they stay a local, manually
# dispatched venue documented in graph-ui/README.md rather than a hosted
# gate.
test-ui:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "22"

- name: CodeAtlasWeb leg (install, unit, style, promises, acceptance, build)
run: scripts/ci/test-ui.sh

# ThreadSanitizer data-race gate. The threaded production surfaces (watcher,
# subprocess, httpd, pipeline, mcp, worker pool, diagnostics, the runnable
# daemon-coordination paths) plus allocator concurrency all run under TSan
Expand Down
31 changes: 22 additions & 9 deletions Makefile.cbm
Original file line number Diff line number Diff line change
Expand Up @@ -438,13 +438,13 @@ PREPROCESSOR_SRC = $(CBM_DIR)/preprocessor.cpp
SQLITE_WRITER_SRC = $(CBM_DIR)/sqlite_writer.c

# Store module (new)
STORE_SRCS = src/store/store.c src/store/store_impact.c src/store/store_graph_digest.c src/store/store_content_digest.c
STORE_SRCS = src/store/store.c src/store/architecture_projection.c src/store/store_impact.c src/store/store_graph_digest.c src/store/store_content_digest.c

# Cypher module (new)
CYPHER_SRCS = src/cypher/cypher.c

# MCP server module (new)
MCP_SRCS = src/mcp/mcp.c src/mcp/index_supervisor.c src/mcp/compact_out.c \
MCP_SRCS = src/mcp/mcp.c src/mcp/index_supervisor.c src/mcp/compact_out.c src/mcp/architecture_jobs.c \
src/mcp/test_impact.c src/mcp/test_impact_diff.c src/mcp/test_impact_classify.c src/mcp/test_impact_source.c src/mcp/test_impact_seed.c src/mcp/test_impact_engine.c src/mcp/test_impact_engine_snapshot.c src/mcp/test_impact_engine_reach.c src/mcp/test_impact_engine_artifact.c src/mcp/test_impact_cli.c src/mcp/test_impact_artifact.c src/mcp/test_impact_changes.c src/mcp/test_impact_origins.c src/mcp/test_impact_coverage.c src/mcp/test_impact_config.c src/mcp/test_impact_select.c src/mcp/test_impact_policy.c src/mcp/test_impact_git.c src/mcp/test_impact_inventory.c src/mcp/test_impact_inventory_input.c src/mcp/test_impact_tree.c src/mcp/test_impact_tree_audit.c src/mcp/test_impact_tree_read.c src/mcp/test_impact_tree_batch.c src/mcp/test_impact_tree_digest.c src/mcp/test_impact_tree_names.c src/mcp/test_impact_tree_plan.c src/mcp/test_impact_tree_posix.c src/mcp/test_impact_tree_posix_acl.c src/mcp/test_impact_tree_posix_io.c src/mcp/test_impact_tree_util.c src/mcp/test_impact_tree_windows.c src/mcp/test_impact_tree_windows_acl.c src/mcp/test_impact_tree_windows_io.c \
src/mcp/test_impact_result.c src/mcp/test_impact_result_json.c src/mcp/test_impact_result_project.c src/mcp/test_impact_result_receipt.c src/mcp/test_impact_result_rows.c src/mcp/test_impact_result_util.c src/mcp/test_impact_result_validate.c src/mcp/test_impact_result_wire.c

Expand Down Expand Up @@ -547,7 +547,7 @@ WATCHER_SRCS = src/watcher/watcher.c
GIT_SRCS = src/git/git_context.c

# CLI module (new)
CLI_SRCS = src/cli/cli.c src/cli/progress_sink.c src/cli/hook_augment.c src/cli/client_adapter.c \
CLI_SRCS = src/cli/cli.c src/cli/runtime_settings.c src/cli/progress_sink.c src/cli/hook_augment.c src/cli/client_adapter.c \
src/cli/agent_clients.c src/cli/agent_profiles.c \
src/cli/config_json_like.c src/cli/config_toml_edit.c src/cli/config_yaml_edit.c \
src/cli/config_text_edit.c src/cli/config_edit_path.c src/cli/activation_transaction.c
Expand All @@ -556,7 +556,16 @@ CLI_SRCS = src/cli/cli.c src/cli/progress_sink.c src/cli/hook_augment.c src/cli/
UI_SRCS = \
src/ui/config.c \
src/ui/http_server.c \
src/ui/activity.c \
src/ui/atlas_repository.c \
src/ui/layout3d.c \
src/ui/layout_regions.c \
src/ui/atlas_api.c \
src/ui/atlas_flows.c \
src/ui/atlas_handout.c \
src/ui/atlas_why.c \
src/ui/atlas_metrics.c \
src/ui/atlas_impact.c \
src/ui/httpd.c \
src/ui/embedded_stub.c

Expand Down Expand Up @@ -714,6 +723,7 @@ TEST_STORE_SRCS = \
tests/test_store_graph_digest.c \
tests/test_store_search.c \
tests/test_store_arch.c \
tests/test_architecture_projection.c \
tests/test_store_bulk.c \
tests/test_store_pragmas.c \
tests/test_store_checkpoint.c \
Expand Down Expand Up @@ -818,7 +828,7 @@ TEST_INTEGRATION_SRCS = tests/test_integration.c tests/test_incremental.c tests/
TEST_TRACES_SRCS = tests/test_traces.c


TEST_CLI_SRCS = tests/test_cli.c tests/test_agent_clients.c tests/test_agent_profiles.c \
TEST_CLI_SRCS = tests/test_cli.c tests/test_runtime_settings.c tests/test_agent_clients.c tests/test_agent_profiles.c \
tests/test_config_json_like.c \
tests/test_config_toml_edit.c tests/test_config_yaml_edit.c tests/test_config_text_edit.c \
tests/test_activation_transaction.c
Expand Down Expand Up @@ -964,7 +974,7 @@ $(BUILD_DIR)/test-foundation: $(TEST_FOUNDATION_SRCS) $(FOUNDATION_SRCS) $(PROJE
$(CC) $(CFLAGS_TEST) -o $@ $(TEST_FOUNDATION_SRCS) $(FOUNDATION_SRCS) $(LDFLAGS_TEST)

test-foundation: $(BUILD_DIR)/test-foundation
cd $(CURDIR) && $(BUILD_DIR)/test-foundation
cd "$(CURDIR)" && $(BUILD_DIR)/test-foundation

# ── Grammar/TS/LSP object files (compiled with relaxed warnings) ─

Expand Down Expand Up @@ -1123,21 +1133,21 @@ $(BUILD_DIR)/test-runner: $(ALL_TEST_SRCS) $(PROD_SRCS) $(EXTRACTION_SRCS) $(AC_
$(LDFLAGS_TEST)

test: $(BUILD_DIR)/test-runner
cd $(CURDIR) && $(BUILD_DIR)/test-runner
cd "$(CURDIR)" && $(BUILD_DIR)/test-runner

# Parallel variant: every suite as its own process; identical gate quality
# (see the ZERO-LOSS CONTRACT in scripts/run-tests-parallel.sh — union guard
# against --list-suites + aggregated pass/fail/skip totals).
test-par: $(BUILD_DIR)/test-runner
cd $(CURDIR) && bash scripts/run-tests-parallel.sh $(BUILD_DIR)/test-runner
cd "$(CURDIR)" && bash scripts/run-tests-parallel.sh $(BUILD_DIR)/test-runner

# Focused native development is intentionally a separate, explicit target so
# an inherited TEST_SUITES value cannot silently narrow the gating test target.
TEST_SUITES ?=
test-focused: $(BUILD_DIR)/test-runner
@test -n "$(strip $(TEST_SUITES))" || \
(echo "TEST_SUITES is required for test-focused"; exit 2)
cd $(CURDIR) && $(BUILD_DIR)/test-runner $(TEST_SUITES)
cd "$(CURDIR)" && $(BUILD_DIR)/test-runner $(TEST_SUITES)

# ── Cumulative bug-reproduction runner (RED board by design, non-gating) ──
# Mirrors test-runner's link line but uses repro_main.c (own main + counters)
Expand Down Expand Up @@ -1309,8 +1319,11 @@ PROD_SRCS_WITH_ASSETS = $(subst src/ui/embedded_stub.c,src/ui/embedded_assets.c,
# Embedded asset object files (generated by embed script)
EMBED_OBJS = $(wildcard $(BUILD_DIR)/embedded/embed_*.o)

# PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: the UI's dev dependencies include
# playwright for its local browser proofs; a plain `npm ci` would otherwise
# download browsers, which no build or gate needs.
frontend:
cd graph-ui && npm ci && npm run build
cd graph-ui && PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm ci && npm run build

embed: frontend
scripts/embed-frontend.sh graph-ui/dist $(BUILD_DIR)/embedded
Expand Down
21 changes: 18 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ High-quality parsing through [tree-sitter](https://tree-sitter.github.io/tree-si
- **162 languages** — vendored tree-sitter grammars compiled into the binary. Nothing to install, nothing that breaks.
- **120x fewer tokens** — 5 structural queries: ~3,400 tokens vs ~412,000 via file-by-file search. One graph query replaces dozens of grep/read cycles.
- **45 supported automatic/conditional client surfaces** — `install` configures detected clients and safely activates conditional clients only when their documented platform, marker, or explicit existing config path is present. See [Multi-Agent Support](#multi-agent-support) for the complete matrix and manual/UI-only boundaries.
- **Built-in graph visualization** — 3D interactive UI at `localhost:9749`, served from the binary itself.
- **CBM Atlas** — the built-in human interface at `localhost:9749`: a reading IDE over the index (explorer and read-only Monaco reader, a semantic twin that follows the caret, flow, bug-hunt and change-scope reading modes, the 3D galaxy, source-cited answers, project management), served from the binary itself.
- **Infrastructure-as-code indexing** — Dockerfiles, Kubernetes manifests, and Kustomize overlays indexed as graph nodes with cross-references. `Resource` nodes for K8s kinds, `Module` nodes for Kustomize overlays with `IMPORTS` edges to referenced resources.
- **17 MCP tools** — search, trace, architecture, impact analysis, targeted index-coverage checks, Cypher queries, dead code detection, cross-service HTTP linking, ADR management, and more.

Expand Down Expand Up @@ -131,16 +131,31 @@ Package-manager setup (npm, PyPI, or Go) verifies and publishes a coherent priva

The ordinary `cli` mode runs one command locally, but it is not disconnected from the daemon above: it connects to the shared coordination daemon — starting one if none is already running — for that same admission barrier plus per-project locks on graph mutations. Its connection is a `cli_session`: it never registers with the background watcher and never starts a UI, and it holds the admission lease only for the command's lifetime. If the command's own connection is what started the daemon, that daemon exits again once the command closes and no other session is attached; if a daemon was already running, the command simply joins and leaves it exactly as found. While the command is running, a temporary monitor separately lets activation cancel that operation and its supervised worker safely; the monitor exits with the command and never becomes a standing daemon. See [CLI Mode](#cli-mode) for details.

### Graph Visualization UI
### CBM Lens Beta — the human interface

The graph UI is built into the binary — every install on every channel has it. Then run it:
The MCP tools are the agent's interface to the code graph; **CBM Lens Beta** is the human's. It is built into the binary — every install on every channel has it:

```bash
codebase-memory-mcp --ui=true --port=9749
```

Open `http://localhost:9749` in your browser. The UI is owned by the shared coordination daemon, so concurrent agent sessions do not start duplicate HTTP servers.

CBM Lens builds on **CodeAtlasWeb**, a reading IDE built by [Bernhard Jackiewicz](https://github.com/BernhardJackiewicz) on the CBM read surface (design and tracking in #1964). It runs air-gapped on loopback, reaches no cloud, and every panel names where its facts come from; what the index did not record is shown as a gap, never filled in with a guess.

When something in CBM Lens does not load, the page has already written it down: its console output, uncaught errors and failed requests go to `${CBM_CACHE_DIR}/logs/ui.log` (default `~/.cache/codebase-memory-mcp/logs/ui.log`, one JSON line per entry, rotated once at 5 MiB). The projects panel (alt+p) shows the tail under "This server", `GET http://localhost:9749/api/ui-log?lines=200` returns it, and a bug report can attach the file.

- **Explorer and reader** — the indexed file tree and a read-only Monaco reader whose source comes from the index.
- **Semantic twin** — follows the caret: what the symbol under it holds, calls, raises and touches, as facts or as pseudocode, pitched at who is reading.
- **Reading modes** — `[w]hy am I here` picks a way in (hunt a bug, scope a change, understand the project, pick an entry point); **flow** walks the calls in the order they run; **bug hunt** compares the expected path into a symbol with what `ingest_traces` observed; **change scope** shows what a change reaches and what covers it.
- **Galaxy** — the persistent 3D graph with focus following in both directions, and a hierarchy view of the entry subgraph.
- **Command line** — search by meaning while you type; a line ending in `?` builds a source-cited answer from indexed fact cards, with an optional local-model wording pass (a llama-server sidecar you start yourself; off by default, and no model or binary ships).
- **Live agents** — an opt-in overlay of AI agents working in the same repository, fed by a loopback bridge over tool-hook events (`graph-ui/agents/`).
- **`[p]rojects`** — index a repository, check or remove an index, edit the project's decision record, and see the server's processes and log.
- **`[?]help`** — what it reads, what it cannot do, and every key it listens to, derived from the wiring itself.

Open a project with `?project=<name>` in the address, or pick it in the projects panel. The frontend's own README, plan, honesty rules and recorded proof runs live under `graph-ui/`.

### Auto-Index

Enable automatic indexing on MCP session start:
Expand Down
Binary file modified docs/graph-ui-screenshot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
60 changes: 60 additions & 0 deletions graph-ui/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
.DS_Store
cbm/
node_modules/
dist/
*.log
.vite/
*.tsbuildinfo

# Die lokalen Modelle und die gebaute Inferenz-Runtime: zusammen ueber 11 GB
# und beide reproduzierbar aus Pruefsummen und Baubefehl. Was committet wird,
# ist die Herkunft und nicht das Gewicht.
#
# Die vier Zeilen je Verzeichnis sind kein Umweg, sondern das, was git
# verlangt: ein ausgeschlossenes VERZEICHNIS wird gar nicht erst betreten, also
# koennte eine Ausnahme darin nie greifen (git-scm, gitignore(5): "It is not
# possible to re-include a file if a parent directory of that file is
# excluded"). Die Verzeichnisregel steht trotzdem zuerst, weil sie die Absicht
# nennt; die naechste hebt sie fuer das Verzeichnis selbst wieder auf, die
# dritte schliesst seinen Inhalt aus, und erst die vierte holt die eine Datei
# zurueck, die committet gehoert.
models/
!models/
models/*
!models/SHA256SUMS

vendor/
!vendor/
vendor/*
!vendor/llama/
vendor/llama/*
!vendor/llama/HERKUNFT.md

# Die Laufspuren des Sidecars. Die PID-Datei gehoert dem laufenden Prozess,
# das Log ist ohnehin schon durch *.log erfasst.
llm/.pid

# Der Node-Bau des Context-Compilers fuer die Eval. Er wird bei jedem Lauf neu
# erzeugt (tools/lib/compiler-bundle.mjs); ein committetes Bundle waere eine
# zweite, alternde Fassung der Dateien daneben.
.eval-build/

# Die Ereignisdatei der Agenten (W11a). Sie enthaelt keine Dateiinhalte, aber
# sie verraet, an welchen Dateien jemand gearbeitet und welche Befehle er
# gefahren hat. Das ist die Arbeitsspur einer Person und gehoert nicht in ein
# Repository; was committet ist, ist die AUFZEICHNUNG des Beweislaufs unter
# fixtures/agent-events/, und deren Herkunft steht dort daneben.
.atlas-trace/
events.jsonl
events.jsonl.seq

# Local visual captures and development reports; JSON/JSONL fixtures stay tracked.
/verification/**/*.png
/verification/**/*.jpg
/verification/**/*.jpeg
/verification/**/*.gif
/verification/**/*.webp
/verification/**/*.svg
/verification/**/*.webm
/verification/**/*.mp4
/verification/**/*.md
48 changes: 0 additions & 48 deletions graph-ui/@/components/ui/badge.tsx

This file was deleted.

64 changes: 0 additions & 64 deletions graph-ui/@/components/ui/button.tsx

This file was deleted.

Loading
Loading