Behaviour: how a shell builds chrome (tab bar, modeline, file tree, overlays) and renders complete frames.
Carved out of MingaEditor.Shell so the rendering responsibility is
declared as a focused contract independent of input routing or buffer
lifecycle.
Summary
Callbacks
Returns a chrome struct with draw lists for each UI region. The shell decides which chrome elements exist and how they render.
Runs the full render pipeline (content, chrome, compose, emit) and sends commands to the frontend. Returns updated state with cached render data.
Callbacks
@callback build_chrome( editor_state :: term(), layout :: MingaEditor.Layout.t(), scrolls :: map(), cursor_info :: term() ) :: MingaEditor.RenderPipeline.Chrome.t()
Returns a chrome struct with draw lists for each UI region. The shell decides which chrome elements exist and how they render.
Runs the full render pipeline (content, chrome, compose, emit) and sends commands to the frontend. Returns updated state with cached render data.