Compare

{comparison.from_short} {comparison.to_short}

{#if restoreLabel && onRestore} {/if}
{#if comparison.files.length === 0}
No differences — these versions are identical.
{:else}
{#each comparison.files as file (`${file.old_path ?? ""}:${file.path}`)} {/each}
{#if !selectedFile}
Select a file to see its changes.
{:else if splitRows.length === 0}
No textual changes for this file.
{:else}
{displayDiffFile(selectedFile)} +{selectedFile.additions} -{selectedFile.deletions}
Before {comparison.from_short}
After {comparison.to_short}
syncSplitScroll("before")} >
{#each splitRows as row, i (`left-${i}`)} {#if row.type === "span"}
{row.text}
{:else}
{row.leftNum ?? ""}
{row.leftText ?? " "}
{/if} {/each}
syncSplitScroll("after")} >
{#each splitRows as row, i (`right-${i}`)} {#if row.type === "span"}
{row.text}
{:else}
{row.rightNum ?? ""}
{row.rightText ?? " "}
{/if} {/each}
{#each diffMarkers as marker, index (`${marker.start}-${marker.end}-${marker.kind}`)} {/each}
{/if}
{/if}