Let me reorder the recipe rows within a block by dragging them, so the display order reflects how I actually think about the processing chain.
Why
Today recipe rows render in insertion order — they come straight from the BlockData.recipes: string[] array (rendered by recipes.map(...) at routes/block.$id.tsx:1077; add() just appends at :561). There's no way to reorder them. In practice I sometimes have to add recipes in an awkward order "just because", and I'd rather see them arranged in an order that makes processing sense.
Scope
- Drag handle on each recipe row in the block editor; drop reorders the
recipes array.
- Persist the new array order (it's already the source of truth, so this is a reorder + save of
BlockData.recipes).
- Reorder is display/authoring only — it must not change solve results (the solver is order-independent: a linear system over the recipe set).
Mirrors the drag/drop pattern already used in the sidebar (dropBlockBefore/setBlockOrder in routes/block.tsx).
Let me reorder the recipe rows within a block by dragging them, so the display order reflects how I actually think about the processing chain.
Why
Today recipe rows render in insertion order — they come straight from the
BlockData.recipes: string[]array (rendered byrecipes.map(...)atroutes/block.$id.tsx:1077;add()just appends at :561). There's no way to reorder them. In practice I sometimes have to add recipes in an awkward order "just because", and I'd rather see them arranged in an order that makes processing sense.Scope
recipesarray.BlockData.recipes).Mirrors the drag/drop pattern already used in the sidebar (
dropBlockBefore/setBlockOrderinroutes/block.tsx).