Settings in DataMind Oda is a shell around surfaces. The shell draws the panel, its navigation and its shared seats; each surface adds a page, controls and cards of its own. Read this when you build a surface that should appear in Settings; Settings overview shows the reader's side of the panel.
A page is one row in the panel's navigation, registered into the section seat (settings.). The row carries:
mcp and servers; Models answers to model, provider, vendor and Kartlos.The label and the description resolve in the running language when the navigation reads them, so a language switch updates the row without registering it again.
The shell keeps named seats. A surface registers its interface into the seat it wants:
| Seat | What it holds | Entries |
|---|---|---|
settings. | An entry that sits beside the Settings trigger, such as an account launcher. | One |
settings. | The control that opens Settings. | One |
settings. | The panel's title area. | One |
settings. | Footer actions, seated with the trigger. | A list |
settings. | The close control. | One |
settings. | The pages. | A list |
settings. | The first-run steps. | A list |
Worth knowing:
A surface can ask the shell to open Settings and name the page to show. Each request carries a fresh number, so a request made while the panel is already open is still a new request. The Ctrl , shortcut (⌘ , on macOS) issues the same kind of request.
A page can open seats of its own, declared with the page's registration, so other surfaces add cards to it without editing it. The Models page opens two:
settings. models. provider-card. A keyed seat: it fires once for each model source card, keyed by the card's own settings namespace. Every card of a source family reaches it, the cards Oda ships and the cards a deployment adds alike. Your entry receives the source's row from the model directory, whether the source is configured, and whether the key credential it references is confirmed.settings. models. footer. An ordered area after the source cards. It passes no details of its own; the entries are yours, in the order you give them.An area with no registrant renders nothing.
Register a row for it into the section seat: an id, an order, a label, and, as you like, an icon, a group, keywords and a description. Fields you leave out take their defaults; Settings overview shows what readers then see.
A page that names no icon shows the settings gear, a page that names no group joins the Advanced group, the order is 0, and a missing label, keywords or description stays empty.
Yes. The label and the description resolve in the running language when the navigation reads them, so a language switch updates the row without a new registration.
Yes. A registration waits for its seat and lands when the seat arrives, and a seat that is declared again collects its entries again. The order in which surfaces register does not matter.
The source's row from the model directory, whether the source is configured, and whether the key credential it references is confirmed. It fires once per source card, keyed by the card's settings namespace, and every card of the family is dispatched, shipped and deployment-added alike.
An ordered area after the source cards. The seat passes no details of its own; entries appear in the order you give them.
The area renders nothing, so a page never shows an empty seat.
Everything the surface added leaves with it: its page, its controls and its cards, down to each seat it opened, and everything it held is released. Nothing stays half-registered.
Yes. When the part of the app that owns the seat is rebuilt or reloaded, the registrations recover with it, and a teardown from the earlier build does not block the new ones.
The inspection tools serve the live catalogue of the running app: the seats a surface can register into, and any registrations that failed. Read it rather than assuming a seat is there; availability can differ between installations. Inspect and manage extensions covers the tools.
Yes. An open request names the page to show, and each request carries a fresh number, so a request made while the panel is open is still a new one. The Ctrl , shortcut (⌘ , on macOS) issues the same kind of request.