summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-01-25github: add workflow to test on macosRobin Jarry
We have some users on macOS. builds.sr.ht does not support proprietary build images and will never do. Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-24aerc: shutdown if socket communication failsAdnan Maolood
When provided with a mailto argument, aerc tries to connect to an existing instance via a unix socket. If that fails, it starts up a new instance and tries again. However, if that fails again (e.g. if the unix server could not be started) then the new instance will remain open without any indication that an error occured. Instead, shutdown the new instance so the user can see the error message.
2022-01-24binds: Warning on unexistent account bindingsinwit
After commit 175d0ef ("binds: add account specific bindings"), when bindings are defined for an account not defined in accounts.conf, aerc quits with an error. After this commit, a warning is logged and aerc ignores those bindings. Signed-off-by: inwit <inwit@sindominio.net>
2022-01-24dirlist: skip unnecessary change-folder actionKoni Marti
when traversing the directory list, aerc will fetch the contents for every directory even though the user might just move on to the next. This causes an unnecessary delay (and load on the worker) and can be avoided by skipping the old change-folder action when a newer one arrives within a predefined time interval. Signed-off-by: Koni Marti <koni.marti@gmail.com>
2022-01-24dirlist: improve change-folder responsivenessKoni Marti
improves change-folder responsiveness. When changing folders, the highlighted directory is currently updated in a callback function to the open-directory action. This creates an unpleasent lag in the ui until the entire operation is done. Instead, we should provide an immediate visual feedback of the selection to the user and keep loading the directory contents in the background. Signed-off-by: Koni Marti <koni.marti@gmail.com>
2022-01-24readme: fix typo in contribution guideinwit
git: 'sendemail' is not a git command. See 'git --help'. The most similar command is send-email Fixes: b84374a572b4 ("readme: add contribution guide") Signed-off-by: inwit <inwit@sindominio.net>
2022-01-24build: check make installMark Dain
Ensure that install works on all platforms.
2022-01-24mk: add make checkinstallMark Dain
Adds a quick way to ensure the install was successful.
2022-01-24build: replace archlinux by openbsdMark Dain
This commit drops Arch Linux in favor of a BSD so there's more variety in CI. Link: https://lists.sr.ht/~rjarry/aerc-devel/%3C20220122033806.91728-1-ktprograms%40gmail.com%3E
2022-01-22msgstore: fetch missing headers in visual modeKoni Marti
fetches missing headers when in visual selection mode. This prevents large archive operations from panicking due to a nil pointer dereference. The archive command will return an error to the ui when a nil message is encountered to signal that the message store is not ready yet. Signed-off-by: Koni Marti <koni.marti@gmail.com>
2022-01-21mk: syntax cleanupRobin Jarry
Avoid multiline strings. Use dlv --build-flags. Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-21mk: be compatible with bsd makeRobin Jarry
ifeq is not supported by bsd make. We don't need this. Use a simple shell command. Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-21Revert "mk: only install if files changed"Robin Jarry
This reverts commit 22ad9e199a6dccf0f5017b3e0bacd3ad01b122e7. This breaks install on macOS: install -m755 -D aerc /usr/local/bin/aerc install: illegal option -- D Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-20mk: avoid searching in hidden directories at the rootRobin Jarry
Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-20Add .editorconfig fileRobin Jarry
Most of the go source files Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-20readme: add package links to debian and fedoraRobin Jarry
Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-20build: add multiple distributionsRobin Jarry
Add build and test on debian, fedora and archlinux. Only check code formatting on alpine. Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-20maildir,notmuch: pass in-memory message to callbackNguyễn Gia Phong
This fixes piped full message (:pipe -m) being empty. Fixes: 904ffacb0e52 ("maildir,notmuch: avoid leaking open files") Signed-off-by: Nguyễn Gia Phong <mcsinyx@disroot.org>
2022-01-20bindings: fix ctrl-h binding not workingRobin Jarry
For some unknown reason. tcell does not include the ctrl modifier for the ctrl-h key event. Fixes: 7a6c808c042b ("bindings: prepare for more modifers") Fixes: https://todo.sr.ht/~rjarry/aerc/8 Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-19terminal: fix nil pointer dereference in pty.GetsizeKoni Marti
pty.Getsize() is used in the Draw function of the terminal widget and wraps the pty.GetsizeFull() function. However, pty.Getsize does not check the returned error from pty.GetsizeFull before dereferencing the winsize struct. In case of an error, this will cause a nil pointer deference and panic. This has been reported in the upstream package, but in the meantime, we can directly use pty.GetsizeFull. References: https://todo.sr.ht/~rjarry/aerc/11 Signed-off-by: Koni Marti <koni.marti@gmail.com>
2022-01-19mk: only install if files changedRobin Jarry
Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-19compose: add default template for new messagesRobin Jarry
Allow defining a default template to use when composing new messages. Add an example to be used for new users. Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-19docs: mention missing -T options for compose and forwardRobin Jarry
A template file may be specified for compose and forward as well. Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-19templates: add x-mailer header in default filesRobin Jarry
This should serve as an example for new users. Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-19maildir,notmuch: avoid leaking open filesNguyễn Gia Phong
Previously, Message.NewReader returned the wrapped buffered reader without a reference to the opened file, so the files descriptors were left unclosed after reading. Now, the file reader is returned directly and closed on the call site. Buffering is not needed here because it is an implementation detail of go-message. Fixes: https://todo.sr.ht/~rjarry/aerc/9
2022-01-19imap: auto-reconnects on connection errorKoni Marti
if the worker emits a connection error, the ui will automatically send back a reconnect command. The worker then establishes a new connection. Auto-reconnect is disabled when the user sends the disconnect command. Fixes: https://todo.sr.ht/~rjarry/aerc/1 Signed-off-by: Koni Marti <koni.marti@gmail.com>
2022-01-19imap: emits connection error on logoutKoni Marti
implements a new connection error message. This allows the worker to emit a connection-related error message to the ui when the imap client closes the loggedOut channel. Signed-off-by: Koni Marti <koni.marti@gmail.com>
2022-01-19imap: fix panic when sending multiple connect cmdsKoni Marti
fixes the panic when the user sends multiple connect commands and is already connected. The panic is caused by closing an already closed channel. This happens when the idle re-init code is not executed, e.g. when there's a return statement in the switch block. A defer func() before the switch block will prevent this. The existing behavior of only creating a new idleStop channel when properly connected is preseverd. Signed-off-by: Koni Marti <koni.marti@gmail.com>
2022-01-15Release version 0.7.1Robin Jarry
Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-15Revert "imap: attempt automatic reconnection on error"Robin Jarry
This reverts commit c605ada3ddc7569ebfc153b07db12a21b30d0569. This breaks reading message bodies. I am not sure why, I'll take some time to fix it later. Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-14Release version 0.7.0Robin Jarry
Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-14imap: attempt automatic reconnection on errorRobin Jarry
Attempt to reconnect to the server when there is an unexpected disconnection or network error. Use the Client.LoggedOut() channel which is closed when the connection is closed. This patch is rather flaky and is certainly bugged. However, it is a start. Signed-off-by: Robin Jarry <robin@jarry.cc>
2022-01-14Stop wrapping OriginalText in default templatesNguyễn Gia Phong
Wrapping embeded code or patches could mess up the content.
2022-01-14fix segfault when copy-pasting into compose editorKoni Marti
fixes the segmentation fault when copy-pasting a large text into the composer editor. The problem is a concurrent read of the vterm field in the Terminal widget in its flushTerminal() method which can be avoided with a mutex. Fixes: https://todo.sr.ht/~rjarry/aerc/12 Signed-off-by: Koni Marti <koni.marti@gmail.com>
2022-01-07completions: add support for completing multiple addressesParasrah
as per the discussion https://lists.sr.ht/~sircmpwn/aerc/patches/15367 this handles completions in `completer/completer.go` by enabling the completer to return a `prefix` that will be prepended to the selected completion candidate.
2022-01-07pgp: PGP/MIME encryption for outgoing emailsKoni Marti
implements PGP/MIME encryption with go-pgpmail. The Encrypt() function of go-pgpmail requires a list of public keys which are taken from the keystore. The keystore is searched for the email addresses of all recipients (to, cc, and bcc). If you want to be able to read the encrypted email afterwards, add yourself as a recipient in either to, cc, or bcc as well. Public keys can be exported from gpg into aerc as follows: $ gpg --export >> ~/.local/share/aerc/keyring.asc When composing a message, the encryption is enabled with the ":encrypt" command. This sets a bool flag in the Composer struct. A reapted application of this command will toggle the flag. The encrypted message can also be signed by using the ":sign" command before or after ":encrypt". References: https://todo.sr.ht/~rjarry/aerc/6 Signed-off-by: Koni Marti <koni.marti@gmail.com>
2022-01-07pgp: PGP/MIME signing for outgoing emailsKoni Marti
implements PGP/MIME signing with go-pgpmail. The Sign() function of go-pgpmail requires a private (signing) key. The signing key which matches the senders email address (from field in email header) is looked up in aerc's copy of the keyring. Private keys can be exported from gpg into aerc as follows: $ gpg --export-secret-keys >> ~/.local/share/aerc/keyring.asc A message is signed with the ":sign" command. The sign command sets a bool flag in the Composer struct. Using the command repeatedly will toggle the flag. References: https://todo.sr.ht/~rjarry/aerc/6 Signed-off-by: Koni Marti <koni.marti@gmail.com>
2022-01-07pgp: update openpgp packages (go-crypto and go-pgpmail)Koni Marti
Replaces golang.org/x/crypto with github.com/ProtonMail/go-crypto consistently and updates go-pgpmail to v0.2.0 Signed-off-by: Koni Marti <koni.marti@gmail.com>
2021-12-13recall: allow recalling messages from any folderinwit
Recall fails when called outside of the "postpone" folder (usually "Drafts"). This makes sense for postponed messages. However, sometimes the user would like to re-edit and re-send an old, possibly sent, message, which would serve as a basis for the new one. This patch allows recall to work outside the postpone folder, thus allowing for re-edition of any message. In the original recall function, if the recalled message is found in the "postpone" folder, once the message has been recalled, re-edited and sent, the original draft is deleted. With this patch, when the message is not in the "postpone" folder, the original message is not deleted. Signed-off-by: inwit <inwit@sindominio.net>
2021-12-13mk: remove version overridepsykose
some build systems build inside a git environment- most notably, alpine aports is built inside an aports tree. this override prevents a VERSION=$pkgver override from being passed at build time and makes aerc think its version is an alpine version from aports: < aerc -v aerc v3.15.0.r122.gb306bc1c4c
2021-12-11format: reformat code with go 1.17Robin Jarry
There was a change in how build tags are formatted. Use this as new reference. Link: https://go.dev/doc/go1.17#gofmt Signed-off-by: Robin Jarry <robin@jarry.cc>
2021-12-11build: add check for code formattingRobin Jarry
Let's avoid pushing unformatted code. Signed-off-by: Robin Jarry <robin@jarry.cc>
2021-12-11config: fix code formattingRobin Jarry
Tabs are required. Fixes: 175d0efeb22e ("binds: add account specific bindings") Signed-off-by: Robin Jarry <robin@jarry.cc>
2021-12-11imap: fix build on macosRobin Jarry
Fix the following build error on mac os: worker/imap/worker.go:368:29: undefined: syscall.TCP_KEEPCNT worker/imap/worker.go:376:29: undefined: syscall.TCP_KEEPINTVL These symbols are not defined on darwin. Fixes: 5dfeff75f368 ("imap: add tcp connection options") Signed-off-by: Robin Jarry <robin@jarry.cc>
2021-12-11binds: add account specific bindingsJonathan Bartlett
When using aerc for multiple accounts often bindings might differ slightly between accounts. For example: * Account A archives to one directory (:archive) * Account B archives to monthly directories (:archive month) Add account specific bindings to allow the user to add a "context" to a binding group using a context specifier and a regular expression. Currently the only context specifier is 'account'. The regular expression is validated against the accounts loaded from accounts.conf and the configuration fails to load if there are no matches. Contextual bindings are merged with global bindings, with contextual bindings taking precedence, when that context is active. Bindings are be configured using a generic pattern of 'view:context=regexp'. E.g.: # Globally Applicable Archiving [messages] A = :read<Enter>:archive<Enter> # Monthly Archiving for 'Mailbox' Account [messages:account=Mailbox$] A = :read<Enter>:archive month<Enter> In the above example all accounts matching the regular expression will archive in the monthly format - all others will use the global binding. Signed-off-by: Jonathan Bartlett <jonathan@jonnobrow.co.uk>
2021-12-11readme: add contribution guideRobin Jarry
This has been requested numerous times. People are not all used to the git email workflow. Also, I am quite anal about commit messages. Signed-off-by: Robin Jarry <robin@jarry.cc>
2021-12-07imap: add tcp connection optionsRobin Jarry
Allow fine tuning tcp connection options. Signed-off-by: Robin Jarry <robin@jarry.cc>
2021-12-07imap: use low level tcp connectionRobin Jarry
In preparation for tcp keepalive options, we need access to the net.TCPConn object associated with an IMAP connection. The only way to do this is to create the connection ourselves. No functional change. Signed-off-by: Robin Jarry <robin@jarry.cc>
2021-12-07imap: move connect procedure into a dedicated functionRobin Jarry
This will prepare for extra tcp connection options support and for automatic reconnect. No functional change. Signed-off-by: Robin Jarry <robin@jarry.cc>
2021-12-06maildir: watch for message renamesRobin Jarry
Messages flags can also be changed without changing directories. Changing flags in maildirs means renaming the message files. Also take renames into account. Link: https://cr.yp.to/proto/maildir.html Fixes: f4d3c8fc77f9 ("maildir: watch for external changes") Signed-off-by: Robin Jarry <robin@jarry.cc>