fix(diff): name the crossed `~` in the legend, and stop the byte refusal claiming non-membership
`~ N→M` carries both files' numbering, but the legend still called `~` a file1 marker, and gating the note on `diff.added` dropped it from a deletions-plus- crossing render entirely: two frames on screen, nothing saying so. The legend now keys on the shapes actually listed. A crossed `~` earns its own clause, `~ N→M spans both files`, owed whether or not a `+` is present, which also tells the two `~` shapes apart when one listing carries both and nothing in the markers does. The `EditScript` refusal said "only in a.txt: 1 line, only in b.txt: 1 line" for two 1.1MB minified files differing by one character. Those counts are pre-pairing, so the two lines would have rendered as a single `~`; "only in" is a claim about content and it was false in both halves. It now reads "1 line changed in a.txt, 1 line changed in b.txt", which states what is known without pairing them. Tests: the crossed render asserts through `render_diff` rather than `format_diff_changes`, which is where the legend is composed and why the inconsistency shipped green. `render_file_diff`'s docstring states that rule for render-shape assertions so the next one lands at the right level. New cases cover the legend for a crossing beside deletions, beside insertions, and beside a plain `~`.
I
Ilia Alshanetsky committed
501dd01cec8f87eac2dff5e1246d4b5038fb5120
Parent: 8073112