Summary
Retest of #975 / PRs #981–#982 on main (23ccd757) found the conflict compare unsaved pane still opens scrolled near the bottom. The disk pane correctly starts at scrollTop === 0.
Observed: #unsaved-version.scrollTop ≈ 6490 with scrollHeight ≈ 6696 on first open after dirty + external edit. Left column shows the typed tail; right column shows the file head — easy to misread as a large structural diff.
Repro
- Launch
boris-editor against the repo.
- Open a reasonably long content file; dirty the buffer near the end.
- Change the same file on disk externally so the conflict dialog opens.
- Inspect
#unsaved-version vs #disk-version scrollTop (or just look at the two columns).
Expected
Both compare panes start at the top when the dialog opens (or stay scroll-synced).
Actual
Disk pane top; unsaved pane near end. $effect in editor/ui/src/dialogs/ConflictDialog.svelte already sets scrollTop = 0 when content flags change, but deps are buffer.content / conflict content / deleted flag — not the textarea element refs. showModal focusing #unsaved-version can jump caret/scroll to the end after that reset.
Suggestion
Reset after mount/focus: include textarea refs in the effect, or await tick() after showModal and force both panes to 0 again. Add a Playwright assertion that both #unsaved-version and #disk-version have scrollTop === 0 on first open.
Evidence
Hands-on retest 2026-09-13; report /workspace/boris-editor-retest.md (local). Related closed umbrella: #975.
Summary
Retest of #975 / PRs #981–#982 on
main(23ccd757) found the conflict compare unsaved pane still opens scrolled near the bottom. The disk pane correctly starts atscrollTop === 0.Observed:
#unsaved-version.scrollTop ≈ 6490withscrollHeight ≈ 6696on first open after dirty + external edit. Left column shows the typed tail; right column shows the file head — easy to misread as a large structural diff.Repro
boris-editoragainst the repo.#unsaved-versionvs#disk-versionscrollTop(or just look at the two columns).Expected
Both compare panes start at the top when the dialog opens (or stay scroll-synced).
Actual
Disk pane top; unsaved pane near end.
$effectineditor/ui/src/dialogs/ConflictDialog.sveltealready setsscrollTop = 0when content flags change, but deps arebuffer.content/ conflict content / deleted flag — not the textarea element refs.showModalfocusing#unsaved-versioncan jump caret/scroll to the end after that reset.Suggestion
Reset after mount/focus: include textarea refs in the effect, or
await tick()aftershowModaland force both panes to0again. Add a Playwright assertion that both#unsaved-versionand#disk-versionhavescrollTop === 0on first open.Evidence
Hands-on retest 2026-09-13; report
/workspace/boris-editor-retest.md(local). Related closed umbrella: #975.