Repository navigation
Fix quit hang during sync, f-forward attachments, keybindings.csv - #105
Merged
Merged
Conversation
- Quitting while a sync was running could hang forever. SessionPool.Close now marks the pool closed so queued operations return ErrPoolClosed instead of reconnecting, and interrupt() closes the raw TCP connection because go-imap resets the read deadline between responses. - Forwarding with the f key dropped attachments; it now loads stored attachments the same way the palette and context-menu Forward do. - keybindings.csv listed paste as ctrl+p and attach file as ctrl+a; the real keys are ctrl+v and alt+f. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three bugs found while live-testing the whole app on two real accounts (custom IMAP and Gmail).
Quit hangs while a sync is running
"Sync all" queues one fetch per folder on each account's session. On quit,
SessionPool.Closewaited behind every queued op, and each one reconnected and ran. With a Gmail account's labels, quitting right afterFhung every time.SessionPool.Closenow sets aclosedflag first. Queued ops returnErrPoolClosedwithout running or dialing, both when they get the lock and again just beforefnruns.interrupt()now closes the raw TCP connection after setting the deadline. go-imap resets the read deadline around every response, so the deadline alone did not stop an op that was mid-read.Live: 0 hangs in 6 quit-mid-sync runs (it hung 6/6 before).
fforward dropped attachmentsOnly Forward from the command palette or the right-click menu loaded stored attachments. The
fkey now goes through the sameforwardSourcehelper. Live: a forward sent withfarrived with its attachment.keybindings.csv
Paste was listed as
ctrl+pand attach file asctrl+a. The real keys (keys.go, the in-app help, the guide) arectrl+vandalt+f.Tests
TestSessionPoolCloseInterruptsOpThatResetsDeadline: failed before the interrupt change.TestSessionPoolCloseSkipsQueuedOps: fails with the closed checks removed.TestForwardKeyCarriesStoredAttachments: coversffrom the list and from the reader; fails without the fix.go test ./..., the race tests andgo vet ./...pass.Docs
CHANGELOG entries added under Unreleased → Fixed.
docs/guide.mdalready says a forward keeps attachments, and the help text was already correct, so neither needed changes.🤖 Generated with Claude Code