8d7e7fea Added the X card pane to the React editor's settings sidebar
no ref
The React editor's settings sidebar had a slot for the X card but nothing in it,
so the post's twitter image, title and description could only be edited from the
Ember post settings menu.
The pane is the Ember subview's behaviour: an image uploaded through the same
hook the feature image uses and committed as it lands, a title and description
staged as the writer types and committed on the blur that ends the edit, and the
card those three produce previewed underneath. Committing is not saving, so the
sidebar's own policy still decides whether a value is persisted or staged. Each
line falls back rather than emptying — the title through the meta title to the
post's own, the description through the post's excerpt, meta description and
generated excerpt to the site's, the image through the feature image to the
site's X and cover images — and those fallbacks are what the inputs show as
placeholders. The preview shows the title whole and cuts the description at what
the card shows, as the subview does. The two column widths are enforced where the
writer is typing and refuse the save they would otherwise fail, so the validator
gate the sidebar already runs gains the two rules in the post validator's own
order, after the Open Graph ones.
The site facts the card falls back to are read off the editor's card config
rather than a second settings request, and the feature image it falls back to
comes from the sidebar, so the preview follows the canvas as the writer changes
it. 4a3b7100 Added the X card pane to the React editor's settings sidebar
no ref
The React editor's settings sidebar had a slot for the X card but nothing in it,
so the post's twitter image, title and description could only be edited from the
Ember post settings menu.
The pane is the Ember subview's behaviour: an image uploaded through the same
hook the feature image uses and committed as it lands, a title and description
staged as the writer types and committed on the blur that ends the edit, and the
card those three produce previewed underneath. Committing is not saving, so the
sidebar's own policy still decides whether a value is persisted or staged. Each
line falls back rather than emptying — the title through the meta title to the
post's own, the description through the post's excerpt, meta description and
generated excerpt to the site's, the image through the feature image to the
site's X and cover images — and those fallbacks are what the inputs show as
placeholders. The preview shows the title whole and cuts the description at what
the card shows, as the subview does. The two column widths are enforced where the
writer is typing and refuse the save they would otherwise fail, so the validator
gate the sidebar already runs gains the two rules in the post validator's own
order, after the Open Graph ones.
The site facts the card falls back to are read off the editor's card config
rather than a second settings request, and the feature image it falls back to
comes from the sidebar, so the preview follows the canvas as the writer changes
it. aee70ca5 Added the X card section to the React editor's settings sidebar
The React editor's settings sidebar had no way to set the card X renders for
a post, so a writer who wanted one had to open the Ember editor.
The pane is the X image, title and description, each standing in for the
post's own. The image goes through the same upload hook the feature image
uses, and removing it stores no value rather than an empty one. The title and
description are settings fields like the meta ones: staged as the writer
types, committed on the blur that ends the edit, and left to the panel's save
policy to persist or hold. Their placeholders show what the card would carry
without them, falling back through the meta fields, the post's own title and
excerpt, and the site's description.
The column widths are limits rather than recommendations, so they join the
settings validator beside the meta lengths: past one the field says so where
the writer is typing, no field save runs, and a save the writer asks for is
refused with the same message.
Every role that can open the panel can open the pane.