SIGN IN SIGN UP

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