One merge window, not fifteen
show_conflict_summary() built a fresh ConflictSummaryDialog every time and only reassigned self._conflict_dialog — the old dialog was still a child of the window, so it stayed on screen. check_for_external_changes() runs resolve_conflicts() on every Syncthing watch tick, so that was one window per merge, forever. Fifteen had piled up on trav's desktop. The dialog is now a session-long log: add_event() folds each merge in as its own timestamped entry, newest first, and the restore button names the merge it would undo. MainWindow reuses the open dialog and clears its reference on finished, so closing it lets the next merge open a fresh one instead of touching a deleted C++ object. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M8Mzze7shr5pZoEgKQU5NW
This commit is contained in:
@@ -38,9 +38,11 @@ performance half. This is the correctness half.
|
||||
never conflict, effective count = base + sum of journals, and `library.json`
|
||||
stops being rewritten every 3 s during playback — which is what generates
|
||||
the conflicts in the first place.
|
||||
- [ ] **Quiet the merge dialog.** Lossless merges (counts and dates only) should
|
||||
be a status-bar line, not a window; keep the dialog for lossy cases, and
|
||||
reuse one instance so six can never stack up again.
|
||||
- [x] **Quiet the merge dialog.** One dialog per session: each merge is folded
|
||||
in as a timestamped entry (newest first) instead of opening another
|
||||
window. Fifteen had stacked up. Kept the window for every merge rather
|
||||
than demoting lossless ones to the status bar — with journals landing,
|
||||
a merge stops being routine and is worth seeing.
|
||||
- [ ] Consider a `.stignore` for `.resolved` so merge backups stop syncing
|
||||
(Round 35 bounded the folder to 10 snapshots, but it still replicates).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user