- a buffer is a `<wisp-buffer>` - a window is a `<wisp-window>` - a frame is a `<wisp-frame>` - windows are children of frames - a frame contains a flat list of windows - a frame is a CSS grid - there are different frame grid layout styles - a frame has an echo window - the echo window has a fixed grid slot - the echo window contains a minibuffer - a window has a modeline - a window contains a buffer - a buffer contains a cursor - the current buffer is bound to `*buffer*` - the current window is bound to `*window*` - the current frame is bound to `*frame*` - a buffer can only be in one window - a buffer doesn't have to be in a window - the DOM is authoritative for buffer containment - you can move a buffer using the web inspector - hidden buffers are outside all frames
<wisp-buffer><wisp-window><wisp-frame>*buffer**window**frame*