Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-06-02 | Don't send Done until finished fetching messages | Drew DeVault | |
2019-06-02 | Remove worker callbacks when Done is received | Drew DeVault | |
2019-05-26 | Skip non selectable mailboxes in directory listing | Reto Brunner | |
If a MailboxInfo has the attribute \Noselect, it is not possible to use this name as a selectable mailbox. Therefore it should not be passed to the directory handlers. The issue pops up if one has a hierarchy like this: INBOX INBOX/lists/stuff INBOX/lists/otherStuff Even though lists is not a valid inbox (doesn't contain mail, only other maildirs) it will show up in the directory listing, when we iterate over the MailboxInfo. It does have the corresponding attribute set though and we can simply filter it out. | |||
2019-05-20 | Load IMAP worker for imap+insecure | Drew DeVault | |
2019-05-20 | Flesh out multipart switcher | Drew DeVault | |
2019-05-20 | Verify TLS certificates | Drew DeVault | |
I was partway done implementing a UI for users to approve untrusted certs with, but let's just make them configure their servers right instead. | |||
2019-05-20 | asdf | Drew DeVault | |
2019-05-19 | worker/types/worker: remove mutex | Simon Ser | |
Worker.callbacks contains two types of callbacks: some are action callbacks, some are message callbacks. Each of those is access from one side of the communication channel (UI goroutine vs. worker goroutine). Instead of using a channel, we can use two different maps for each kind. This simplifies the code and also ensures we don't call an action callback instead of a message callback (or the other way around). | |||
2019-05-19 | worker/types/worker: make ID allocation atomic | Simon Ser | |
Message IDs are allocated for both messages from UI to workers and the other way around. Hence, the global nextId variable is accessed from multiple goroutines. Instead, use atomic to access the global counter. | |||
2019-05-19 | worker/types/worker: set ID before sending message | Simon Ser | |
The previous code set the message ID after sending it, which could result in the receiver reading the ID before it's set. | |||
2019-05-17 | s/aerc2/aerc/g | Drew DeVault | |
2019-05-15 | Copy sent emails to the Sent folder | Drew DeVault | |
Or rather, to a user-specified folder | |||
2019-05-14 | Implement move, mv commands | Drew DeVault | |
2019-05-14 | Implement :copy (aka :cp) | Drew DeVault | |
2019-05-13 | Handle external message deletions | Drew DeVault | |
2019-05-13 | Handle incoming emails gracefully | Drew DeVault | |
2019-04-29 | worker/imap: use the IMAP connection from a single goroutine | Simon Ser | |
Unfortunately, the IMAP protocol hasn't been designed to be used from multiple goroutines at the same time. For instance, if you fetch twice the same message from two different goroutines, it's not possible to tell whether the response is for one receiver or the other. For this reason, go-imap clients aren't safe to use from multiple goroutines. This commit changes the IMAP workers to be synchronous again (a command is executed only after the previous one has completed). To use IMAP from different threads, popular clients (e.g. Thunderbird) typically open multiple connections. | |||
2019-04-27 | worker/types: fix Worker.Callbacks race condition | Simon Ser | |
Worker.Process* functions were called in different goroutines than Worker.Post*. Protect the map with a mutex. Also make the map unexported to prevent external unprotected accesses. Worker.Process* functions used to delete items from the map. However they didn't delete the element they retrieved: callbacks[msg.InResponseTo()] was read while callbacks[msg] was deleted. I'm not sure I understand why. I tried to delete the element that was accessed - but this broke everything (UI froze at "Connecting..."). I don't believe any elements were actually removed from the map, so the new code just doesn't remove anything. | |||
2019-03-31 | Make message viewer real, part two | Drew DeVault | |
2019-03-31 | Rename FetchMessageBodies to FetchFullMessages | Drew DeVault | |
2019-03-31 | Make the message viewer real, part one | Drew DeVault | |
2019-03-31 | Don't parse mail in worker; send a reader instead | Drew DeVault | |
2019-03-31 | Pull BodyStructure up from IMAP worker | Drew DeVault | |
2019-03-29 | Add body fetching support code | Drew DeVault | |
2019-03-20 | Implement :delete-message | Drew DeVault | |
2019-03-14 | Display message subjects in message list | Drew DeVault | |
2019-03-14 | Implement message store side of message fetching | Drew DeVault | |
2019-03-10 | Fetch valid UIDs from server after opening dir | Drew DeVault | |
2019-01-13 | Add loading spinner | Drew DeVault | |
2019-01-13 | Add name to DirectoryInfo messages | Drew DeVault | |
2019-01-13 | Issue IMAP SELECT command | Drew DeVault | |
2018-06-12 | Apply gofmt | Drew DeVault | |
2018-06-12 | fallthrough in worker selection | Markus Ongyerth | |
2018-02-02 | Tidy up list.go | Drew DeVault | |
2018-02-01 | Refactoring; consume listing response | Drew DeVault | |
2018-02-01 | Implement (most of) mailbox listing | Drew DeVault | |
2018-02-01 | Improve logging | Drew DeVault | |
2018-02-01 | Reduce boilerplate in worker/UI | Drew DeVault | |
2018-01-31 | Add certificate approval flow | Drew DeVault | |
2018-01-31 | Improve logging | Drew DeVault | |
2018-01-14 | Connect to IMAP server, login and idle | emersion | |
2018-01-11 | Move worker into account tab | Drew DeVault | |
2018-01-10 | Renderer scaffolding | Drew DeVault | |
2018-01-10 | Misc idiomatic fixes | emersion | |
2018-01-10 | Sleep main and worker loops on idle | Drew DeVault | |
2018-01-09 | Parse account configuration | Drew DeVault | |
2018-01-09 | Initial pass on worker/UI message passing | Drew DeVault | |