diff options
| author | Danilo M. <danix@danix.xyz> | 2026-08-20 18:54:50 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-08-20 18:54:50 +0200 |
| commit | e35f2da3fd9c5afbbea85b432f26810c17e8318e (patch) | |
| tree | 9fdc9f7ee15b548bb0a9d573f9ccf279aeb5c71f /docs/superpowers | |
| parent | 14e74f8f92ce949230e3008de8fd24d0c5a18153 (diff) | |
| download | qtmaildir-e35f2da3fd9c5afbbea85b432f26810c17e8318e.tar.gz qtmaildir-e35f2da3fd9c5afbbea85b432f26810c17e8318e.zip | |
docs: record that build() blocks the caller, item 123
Task 4's code review measured it: a large attachment is read and base64
encoded on the calling thread, and autosave calls build() from a GUI-thread
timer. The directory hang that review found is fixed, but the blocking read
is by design and will be felt in the composer.
Recorded against Task 11 rather than fixed, because nothing in the composer
crosses the worker boundary and adding a second threading model for one call
is worse than the stall.
Diffstat (limited to 'docs/superpowers')
| -rw-r--r-- | docs/superpowers/plans/2026-08-20-compose-and-send.md | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/docs/superpowers/plans/2026-08-20-compose-and-send.md b/docs/superpowers/plans/2026-08-20-compose-and-send.md index 1478f59..e7eddfa 100644 --- a/docs/superpowers/plans/2026-08-20-compose-and-send.md +++ b/docs/superpowers/plans/2026-08-20-compose-and-send.md @@ -3871,6 +3871,16 @@ popup between stages." ### Task 11: ComposeWindow +**Found during Task 4's code review, and it lands here.** `MessageBuilder::build()` +is SYNCHRONOUS and can block: a large attachment is read and base64-encoded on +the calling thread. Autosave calls it on a timer, on the GUI thread, so a +30-second debounce that hits a 25MB attachment stalls typing. The directory +hang that review found is fixed in `MessageBuilder`, but the blocking read +remains by design. Do not move it to a thread as part of this task, since +nothing here crosses the worker boundary and adding a second threading model +for one call is worse than the stall. Note it in a comment at the autosave call +site so the next person measuring a freeze knows where to look. + The only unit here that owns widgets, and the one that composes the other four. It contains no MIME and no process logic: a composer bug and a MIME bug are found in different files. |
