The nine existing blocks covered a hero and the things under it. Anything
with a header, an FAQ, a team, a set of numbers or a signup band had to be
written by hand in the code widget — which is where people stopped.
Each new block keeps to its own class namespace, so stacking two of them
cannot make the first change shape: nothing here redefines a selector
another block already owns.
Two editor quirks are worked around in the markup rather than left for the
owner to trip over. Form buttons and table cells parse as opaque boxes
whose text is only reachable through the trait panel, so they carry
data-gjs-type=text and behave like every other word on the page (the
contact block's Send button gets the same treatment — it had the bug
first). And a bare <video> is given controls and a play bar by the editor,
which is wrong for a background film, so the video hero turns them off in
the model instead. Neither attribute survives export.
Panel icons now distinguish navigation blocks from page sections.