Rebuild the Orbit Schema tab around a map and neighbors
What does this MR do and why?
The Schema tab showed all 32 entities in one graph that was hard to read. This MR replaces it with a map of the schema and a neighbor graph for each entity.
- A searchable entity picker with item counts stays above the map and the graph.
- The details panel shows relationships by direction and the properties.
- A failed schema load shows an error with Try again. Before, the tab loaded forever.
- The search matches entity and topic names. It no longer matches relationship names.
- The schema item event now sends where the user selected the entity: map, neighbor, details, or picker.
- No feature flag: the tab reads the same API data as before.
The MR comes from the redesign draft and moves the files to dashboard/schema/.
References
Closes gitlab-org/orbit/knowledge-graph#1366 (closed)
- Design: https://claude.ai/artifact/Ppi6kSq4wf8mQVgSxAi8qf
- Source draft: !259468 (closed)
- Structure design: https://gitlab.com/gitlab-org/orbit/knowledge-graph/-/snippets/6066521
Other open MRs
- !260936 (merged) imports
orbit_schema_page.vuefrom its old path. The MR that merges second updates the import todashboard/schema/. - !247654 fixes scrolling in the old Schema tab. This MR replaces that tab.
Screenshots or screen recordings
End-to-end runs against GDK with live GKG data (beta group, user with Owner role). The failures are simulated in the browser: the schema API is slowed or returns 503, and the graph stats API returns 500.
| Before | After |
|---|---|
![]() |
![]() |
Happy path: map, topic (the picker stays in place), related entity, keyboard Enter on a neighbor (focus moves), Properties tab, picker search, breadcrumb, ?entity= link.
Bad path: unknown ?entity=, a picker search with no match, a link from an entity to itself, a small screen.
Disaster path: slow schema API, schema API down then back with Try again, graph stats down.
Picker, error state, widths, and dark mode
| View | Screenshot |
|---|---|
| Map | ![]() |
| Map, picker open | ![]() |
| Entity, picker open | ![]() |
| Schema load error | ![]() |
| 1280 | ![]() |
| 1024 | ![]() |
| 390 | ![]() |
| 1440, dark | ![]() |
What the runs checked (27 of 27 passed)
| Path | Check |
|---|---|
| Happy | The map and the picker show on open. A topic opens its entity, with the details beside the graph. The title and the picker do not move, and the graph starts where the map started. |
| Happy | A related entity opens from the details. Focus moves to the new entity name, with the mouse and with the keyboard. |
| Happy | The picker search filters the entities and opens one. The breadcrumb goes back to the map. ?entity=pipeline opens Pipeline. |
| Bad | An unknown ?entity= shows the map, with no error. A picker search with no match says so. |
| Bad | A link from Pipeline to itself keeps Pipeline selected. |
| Disaster | A slow schema shows the loading icon, then the tab. |
| Disaster | When the schema API is down, an error with Try again shows and the loading icon goes away. Try again loads the tab. |
| Disaster | When graph stats are down, counts are hidden, Explore stays, and the graph still works. |
How to set up and validate locally
- As a member of a group with Orbit turned on, go to http://127.0.0.1:3000/dashboard/orbit/schema.
- Select a topic on the map, then a neighbor in the graph, then a related entity in the details panel.
- Open the picker above the graph, search for
merge, and pick an entity. - Select Schema in the breadcrumb to go back to the map.
- Open http://127.0.0.1:3000/dashboard/orbit/schema?entity=pipeline to open an entity from the URL.
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.









