diff options
| author | Danilo M. <danix@danix.xyz> | 2026-09-07 10:12:10 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-09-07 10:12:10 +0200 |
| commit | a00d35452fcef8c8bc723ba7045fcae38fe8f315 (patch) | |
| tree | 510d0bb2d9265367648f38bbf43186f471379716 /CHANGELOG.md | |
| parent | 6326030b7179580b934ba852b0fd98577bfb464a (diff) | |
| download | qtmaildir-a00d35452fcef8c8bc723ba7045fcae38fe8f315.tar.gz qtmaildir-a00d35452fcef8c8bc723ba7045fcae38fe8f315.zip | |
fix: refresh the current query when the index changes
Item 192's second half, answered by the user: indexing is not repainting.
The sent copy became findable the moment it was sent and a Sent view already
on screen still did not show it, because nothing re-ran the query. The model
cannot insert the row optimistically either, since item 170's constraint
applies: the query never returned that thread.
NotmuchWorker::indexChanged() is emitted at the end of both indexDraftFile()
and removeIndexedFile(), the only two entry points that change what a path
query would return without any query having run. MainWindow connects it to
refreshCurrentQuery(), which covers all three gestures a path view can miss:
a sent copy indexed, a draft saved, a draft's entry dropped on send. Wiring
only the indexing half would have left a ghost draft row visible in a Drafts
view after a send.
The signal carries nothing, so it cannot invite an optimistic insert. It is
emitted after the database closes, so a refresh reaching notmuch on the next
turn of the event loop cannot race the write handle. refreshCurrentQuery()
rather than runCurrentQuery(): a send must not clear the selection, the
expansions or the undo stack of the window behind the composer.
aSentMessageAppearsInASentViewAlreadyOnScreen drives a real send through a
worker-backed window, asserts the Sent view is empty first, and asserts the
row arrives with no second returnPressed() and no sync. Mutation-checked by
disabling the connection.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FWeBw3UqxpBktSc1AkZ6ir
Diffstat (limited to 'CHANGELOG.md')
| -rw-r--r-- | CHANGELOG.md | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f118b3..e1378fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -49,7 +49,9 @@ point at which they are stable. that view is a search over the index rather than a listing of the folder, so the message stayed invisible until the next sync, up to ten minutes later. Saved drafts have been indexed immediately since 0.22.0; the sent copy now - is too. + is too, and the view you are looking at refreshes to show it rather than + waiting for a sync. The same refresh reaches the Drafts view, so a saved + draft appears and a sent one's entry leaves without a sync either. - **A draft no longer becomes a new message every time it is saved.** Each autosave built the draft under a fresh Message-ID, and because mbsync uploads each revision to the drafts folder before the next save removes the |
