049c72393a
The Invalidatable struct is designed so that a widget can have a callback function ran when it is Invalidated. This is used to cascade up the widget tree, marking things as Invalid along the way so that only Invalid widgets are drawn. However, this is only implemented at the grid cell level for checks if the cell is invalidated -- and the grid cells are never set back to a "valid" state. The effect of this is that no matter what is invalidated, the entire UI gets drawn again. The calling through the Invalidate callbacks creates *several* race conditions, as Invalidate is called from several different goroutines, and many widgets call invalidate on their parent or children. Tcell has optimizations to only rerender screen cells that have changed their rune and style. The only performance penalty by redrawing the entire screen for aerc is the operations *within the aerc draw methods*. Most of these are not expensive and have relatively no impact on performance. Skip all of the OnInvalidates, and directly invalidate the UI when DoInvalidate is called by a widget. This reduces data races, and simplifies the widget redraw logic signficantly. Signed-off-by: Tim Culverhouse <tim@timculverhouse.com> Acked-by: Robin Jarry <robin@jarry.cc>
9.8 KiB
9.8 KiB
Change Log
All notable changes to aerc will be documented in this file. The format is based on Keep a Changelog.
Unreleased
Added
- Support for bindings with the Alt modifier.
- Zoxide support with
:z
. - Hide local timezone with
send-as-utc = true
inaccounts.conf
. - Persistent command history in
~/.cache/aerc/history
. - Cursor shape support in embedded terminals.
- Bracketed paste support.
- Display current directory in
status-line.render-format
with%p
. - Change accounts while composing a message with
:switch-account
. - Override
:open
handler on a per-MIME-type basis inaerc.conf
. - Specify opener as the first
:open
param instead of always using default handler (i.e.:open gimp
to open attachment in GIMP). - Restored XOAUTH2 support for IMAP and SMTP.
Changed
:open-link
now supports link types other than HTTP(S)- Running the same command multiple times only adds one entry to the command history.
- Embedded terminal backend (libvterm was replaced by a pure go implementation).
- Use event driven loop instead of Tick based
Fixed
:open-link
will now detect links containing an exclamation markoutgoing-cred-cmd
will no longer be executed every time an email needs to be sent. The output will be stored until aerc is shut down. This behaviour can be disabled by settingoutgoing-cred-cmd-cache=false
inaccounts.conf
.- Mouse support for embedded editors when
mouse-enabled=true
. - Numerous race conditions related to event handling order
- Numerous race conditions related to OnInvalidate calls
0.12.0 - 2022-09-01
Added
- Read-only mbox backend support.
- Import/Export mbox files with
:import-mbox
and:export-mbox
. address-book-cmd
can now also be specified inaccounts.conf
.- Run
check-mail-cmd
with:check-mail
. - Display active key binds with
:help keys
(bound to?
by default). - Multiple visual selections with
:mark -V
. - Mark all messages of the same thread with
:mark -T
. - Set default collapse depth of directory tree with
dirlist-collapse
.
Changed
- Aerc will no longer exit while a send is in progress.
- When scrolling through large folders, client side threading is now debounced
to avoid lagging. This can be configured with
client-threads-delay
. - The provided awk filters are now POSIX compliant and should work on MacOS and BSD.
outgoing-cred-cmd
execution is now deferred until a message needs to be sent.next-message-on-delete
now also applies to:archive
.:attach
now supports path globbing (:attach *.log
)
Fixed
- Transient crashes when closing tabs.
- Binding a command to
<c-i>
and<c-m>
. - Reselection after delete and scroll when client side threading is enabled.
- Background mail count polling when the default folder is empty on startup.
- Wide character handling in the message list.
- Issues with message reselection during scrolling and after
:delete
with threading enabled.
Deprecated
- Removed support for go < 1.16.
0.11.0 - 2022-07-11
Added
- Deal with calendar invites with
:accept
,:accept-tentative
and:decline
. - IMAP cache support.
- Maildir++ support.
- Background mail count polling for all folders.
- Authentication-Results display (DKIM, SPF & DMARC).
- Folder-specific key bindings.
- Customizable PGP icons.
- Open URLs from messages with
:open-link
. - Forward all individual attachments with
:forward -A
.
Changed
- Messages are now deselected after performing a command. Use
:remark
to reselect the previously selected messages and chain other commands. - Pressing
<Enter>
in the default postpone folder now runs:recall
instead of:view
. - PGP signed/encrypted indicators have been reworked.
- The
threading-enabled
option now affects if message threading should be enabled at startup. This option no longer conflicts with:toggle-threads
.
Fixed
:pipe
,:save
and:open
for signed and/or encrypted PGP messages.- Messages that have failed
gpg
encryption/signing are no longer sent. - Recalling attachments from drafts.
0.10.0 - 2022-05-07
Added
- Format specifier for compact folder names in dirlist.
- Customizable, per-folder status line.
- Allow binding commands to
<
and>
keys. - Optional filter to parse ICS files (uses
python3
vobject library). - Save all attachments with
:save -a
. - Native
gpg
support. - PGP
auto-sign
andopportunistic-encrypt
options. - Attach your PGP public key to a message with
:attach-key
.
Fixed
- Stack overflow with faulty
References
headers when:toggle-threads
is enabled.
0.9.0 - 2022-03-21
Added
- Allow
:pipe
on multiple selected messages. - Client side on-the-fly message threading with
:toggle-threads
(conflicts with existingthreading-enabled
option). - Per-account, better status line.
- Consecutive, incremental
:search
and:filter
support. - Foldable tree for directory list.
Bcc
andBody
inmailto:
handler.- Fuzzy tab completion for commands and folders.
- Key pass though mode for the message viewer to allow searching with
less
.
Changed
- Use terminfo for setting terminal title.
0.8.2 - 2022-02-19
Added
- New
colorize
filter with diff, multi-level quotes and URL coloring. - XDG desktop entry to use as default
mailto:
handler. - IMAP automatic reconnect.
- Recover drafts after crash with
:recover
. - Show possible actions with user configured bindings when reviewing a message.
- Allow setting any header in email templates.
- Improved
:change-folder
responsiveness. - New
:compose
option to never include your own address when replying.
Changed
- Templates and style sets are now searched from multiple directories. Not from
a single hard-coded folder set at build time. In addition of the configured
PREFIX/share/aerc
folders at build time, aerc now also looks into~/.config/aerc
,~/.local/share/aerc
,/usr/local/share/aerc
and/usr/share/aerc
- A warning is displayed when trying to configure account specific bindings for a non-existent account.
Fixed
Ctrl-h
binding not working.- Open files leaks for maildir and notmuch.
0.8.1 - 2022-02-20 [YANKED]
0.8.0 - 2022-02-19 [YANKED]
0.7.1 - 2022-01-15
Added
- IMAP low level TCP settings.
- Experimental IMAP server-side and notmuch threading.
:recall
now works from any folder.- PGP/MIME signing and encryption.
- Account specific bindings.
Fixed
- Address book completion for multiple addresses.
- Maildir external mailbox changes monitoring.
0.7.0 - 2022-01-14 [YANKED]
0.6.0 - 2021-11-09
The project was forked to https://git.sr.ht/~rjarry/aerc.
Added
- Allow more modifiers for key bindings.
- Dynamic dates in message list.
- Match any header in filters specifiers.
Fixed
- Don't read entire messages into memory.
0.5.0 - 2020-11-10
Added
- Remove folder with
:rmdir
. - Configurable style sets.
- UI context aware options and styling.
- oauthbearer support for SMTP.
- IMAP sort support.
0.4.0 - 2020-05-20
Added
- Address book completion.
- Initial PGP support using an internal key store.
- Messages can now be selected with
:mark
. - Drafts handing with
:postpone
and:recall
. - Tab management with
:move-tab
and:pin-tab
. - Add arbitrary headers in the compose window with
:header
. - Interactive prompt with
:choose
. - Notmuch labels improvements.
- Support setting some headers in message templates.
Changed
aerc.conf
ini parser only uses=
as delimiter.:
is now ignored.
0.3.0 - 2019-11-21
Added
- A new notmuch backend is available. See
aerc-notmuch(5)
for details. - Message templates now let you change the default reply and forwarded message
templates, as well as add new templates of your own. See
aerc-templates(7)
for details. - Mouse input is now optionally available and has been rigged up throughout the
UI, set
[ui]mouse-enabled=true
inaerc.conf
to enable. :cc
and:bcc
commands are available in the message composer.- Users may now configure arbitrary message headers for editing in the message composer.
0.2.0 - 2019-07-29
Added
- Maildir & sendmail transport support
- Search and filtering are supported (via
/
and\
by default) aerc mailto:...
now opens the composer in running aerc instance- Initial tab completion support has been added
- Improved headers and addressing in the composer and message view
- Message attachments may now be added in the composer
- Commands can now be run in the background with
:exec
or:pipe -b
- A new triggers system allows running aerc commands when new emails arrive, which may (for example) be used to send desktop notifications or move new emails to a folder
Changed
- The filters have been rewritten in awk, dropping the Python dependencies.
w3m
anddante
are both still required for HTML email, but the HTML filter has been commented out in the default config file. - The default keybindings and configuration options have changed considerably,
and users are encouraged to pull the latest versions out of
/usr/share
and re-apply their modifications to them, or to at least review the diff with their current configurations. aerc may not behave properly without taking this into account.
0.1.0 - 2019-06-03
Initial release.