sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/

History.txt (20389B) - raw

      1 == 1.4 / 2026-04-21
      2 
      3 * #343: Draft messages containing non-ASCII characters are now displayed
      4   correctly in thread view.
      5 * #533, #524: Sup now refuses to start if config.yaml is missing a default
      6   account, or no sendmail command is configured.
      7 * Improved the lazy-loading behaviour when scrolling down in thread list views.
      8 * Sup now gracefully handles RFC2047-encoded words which contain incomplete
      9   UTF-8 sequences after decoding, instead of crashing with ArgumentError.
     10 * #516: Sup can now load sources.yaml produced by very old versions of Sup,
     11   which left a syntactically invalid YAML tag for the SentLoader class.
     12 * Fixed error handling behaviour for various scenarios where a draft message is
     13   modified outside Sup.
     14 * Sup no longer uses deprecated Xapian APIs, for compatibility with Xapian 2.0.
     15 * Sup is now tested on Ruby 4.0.
     16 * Sup's web site and git repos have moved to: https://supmua.dev/
     17 
     18 == 1.3 / 2025-04-21
     19 
     20 * #596: If a message lacks a Date header, or the Date header is not in valid
     21   RFC2822 format, the local delivery timestamp of the message will now be used
     22   instead. Fixes a bug where such messages would constantly jump to the top of
     23   the thread list.
     24 * #502: Fixed incorrect Content-Transfer-Encoding headers when sending GPG
     25   signed or encrypted messages with attachments.
     26 * #522: Sup now uses the configured signing key when sending a message that is
     27   both signed and encrypted. Previously it would ignore the configured key and
     28   use the GPG default signing key.
     29 * #489: Attachments are now encoded if they have lines longer than 998
     30   characters.
     31 * #602: The message/global MIME type is now recognised as an embedded message.
     32 * Sup is now tested on Ruby 3.4.
     33 
     34 == 1.2 / 2024-04-21
     35 
     36 * #619: Sup is now compatible with and tested on Ruby 3.2 and Ruby 3.3.
     37   (Dan Callaghan)
     38 * #603: Fixed deprecated usage of Enumerator.new, which caused a crash on
     39   Ruby 3+. (Gui Goncalves)
     40 * OutOfSyncSourceErrors now show an error message in the thread view in place
     41   of the out-of-sync message body, instead of crashing. (Dan Callaghan)
     42 * #613: When installing Sup as a gem, the dependency on xapian-ruby is now
     43   skipped if the SUP_SKIP_XAPIAN_GEM_INSTALL environment variable is set.
     44   Previously it was skipped unconditionally on OpenBSD only. (Dan Callaghan)
     45 
     46 == 1.1 / 2022-05-23
     47 
     48 * #588, #577: Sup is now compatible with and tested on Ruby 3.0 and Ruby 3.1.
     49   (Dan Callaghan)
     50 * When the Sup gem installs xapian-ruby, it will install to the user gem
     51   directory if the system gem directory is not writable. (Iain Parris)
     52 * #571: To and From addresses of enclosed messages are now displayed normally,
     53   instead of as Redwood::Person objects. (Iain Parris)
     54 * #570: Fixed wording when displaying enclosed messages without Date header.
     55   (Iain Parris)
     56 * #205, #602: UTF-8 header values are now accepted and handled correctly, as
     57   per RFC6532. (Dan Callaghan)
     58 * #585: Text/plain attachments with invalid charset are now displayed as
     59   US-ASCII (with high bytes replaced) instead of crashing. (Dan Callaghan)
     60 * #424: Spaces are now accepted in RFC2047-encoded header words, even though
     61   the RFC forbids them. (Dan Callaghan)
     62 * Invalid RFC2047-encoded header words are now displayed in their raw form,
     63   rather than trying to forcibly transcode them to UTF-8, as per the RFC's
     64   recommendation. (Dan Callaghan)
     65 * Sup now decodes UTF-7 correctly instead of crashing. (Dan Callaghan)
     66 
     67 == 1.0 / 2020-07-12
     68 
     69 No changes. The version number is incremented to 1.0 to reflect the fact that
     70 Sup is mature and no further backwards-incompatible changes are planned.
     71 
     72 == 0.23 / 2020-07-10
     73 
     74 * #505: Shell metacharacters in attachment filenames are no longer escaped when
     75   saving the attachment to disk using 's'. Fixes attachments being saved with
     76   unnecessary \ escapes in their filename. (Felix Van der Jeugt)
     77 * When saving attachments, Sup now creates all parent directories of the
     78   destination path. (Matthieu Rakotojaona)
     79 * The '@' key now reloads all messages in thread view. (Seva Zhidkov)
     80 * #517: The 'g' key now correctly opens each selected URL if multiple URLs are
     81   under the cursor, instead of opening the last URL multiple times.
     82   (Matthieu Rakotojaona)
     83 * The 'g' key now works when the cursor is over a URL inside a signature block.
     84   (Michael Dwyer)
     85 * The 'reply-to' hook is now passed a 'message' variable, the message being
     86   replied to, so that the hook can choose the reply mode based on properties of
     87   the message like the list address. (Simon Tatham)
     88 * The contacts list now shows also email addresses supplied by the
     89   'extra-contract-addresses' hook. (Matthieu Rakotojaona)
     90 * #510: The micalg= parameter is now set correctly when sending
     91   multipart/signed messages. Fixes issues with other mail clients which fail to
     92   handle a missing micalg= parameter on signed messages. (Dan Callaghan)
     93 * Attachments with text/plain MIME type are now correctly decoded according to
     94   their charset= parameter. (Dan Callaghan)
     95 * Strings returned by the 'mime-decode' hook are now kept in their original
     96   encoding and displayed as is, instead of being wrongly transcoded.
     97   (Dan Callaghan)
     98 * Rendering speed of thread list views is improved. (Vickenty Fesunov)
     99 * Fixed display width calculation for emoji. Previously, sender names and
    100   thread subjects using emoji would be incorrectly truncated, if the terminal
    101   emulator displays emoji as double-width. (Dan Callaghan)
    102 * List address is parsed from the non-standard Mailing-List header used by
    103   Groups.io. (Dan Callaghan)
    104 * Fixed misinterpretation of quoted text where the quote uses both an
    105   "---- Original Message ----" marker and > delimiters, for example from
    106   Zimbra users. (Steven Lawrance)
    107 * Added a new option 'indent_spaces' in config.yaml, to control the number of
    108   spaces for indenting each child message when displaying the thread view.
    109   The default remains 2. (Antoni Kaniowski)
    110 * Attachment sizes are now displayed using standard unit abbreviations like
    111   "MiB". (Sharif Olorin)
    112 * Sup now gives a hint if a search query results in an empty search after
    113   tokenization (for example, if the user tries to search for only punctuation).
    114   (Per Andersson)
    115 * The --list-hooks option now takes an additional option --hooks-matching, to
    116   filter the listed hooks. (Matthieu Rakotojaona)
    117 * Fixed ArgumentError in logging methods on Ruby 2.7. (Dan Callaghan)
    118 * Fixed FrozenError in verified_ok? method on Ruby 2.7. (Iain Parris)
    119 * Fixed Fixnum deprecation warnings on Ruby 2.4+. (Dan Callaghan)
    120 * Several dependency version updates. The optimist gem replaces trollop. The
    121   unicode-display_width gem is a new dependency.
    122 
    123 == 0.22.1 / 2015-06-18
    124 
    125 * Fix bug (#429)  in gem build / install.
    126 
    127 == 0.22.0 / 2015-06-16
    128 
    129 * Use mime-types 2
    130 * Fix ruby style (Zeger-Jan van de Weg)
    131 * Johannes Larsen: fix long-standing bug with draft-id mixups causing
    132   drafts to disappear.
    133 * Various bugs and minor improvements.
    134 
    135 == 0.21.0 / 2015-02-12
    136 
    137 * Key binding to fetch GPG key from keyserver (Matthieu Rakotojaona)
    138 * Replace occurences of File.exists? with File.exist? (Zeger-Jan van de
    139   Weg)
    140 * You can now unsubscribe from mailinglists using an url, if you have a
    141   goto-hook setup (Timon Vonk).
    142 * Forward attribution can be customized using the forward-attribution
    143   hook (Ruthard Baudach)
    144 * Do a few more checks for buffer not nil in the hope to fix a few
    145   random crashes
    146 * Add bash completion (Per Andersson)
    147 * Replace dl/import with Fiddle (Timon Vonk)
    148 * Drop support for ruby 1.9.3
    149 * Add tests for contact manager and persons (Zeger-Jan van de Weg)
    150 
    151 == 0.20.0 / 2014-10-06
    152 
    153 * add man-pages (generated from wiki) (Per Andersson)!
    154 * HTML messages or messages that are decoded with the mime-decode hook
    155   are now indexed if the mime-decode hook is set up (Scott Bonds).
    156 * OpenBSD support (Scott Bonds)!
    157 * goto-hook for keybinding to open URLs.
    158 * support special charaters in source URIs (Scott Bonds).
    159 * output message id and locations on all load_from_source failures
    160 * fix long-standing getlocal bug
    161 * make new test GPG keys (old ones expired), valid for one year, script
    162   now available in devel/ for making new ones.
    163 
    164 == 0.19.0 / 2014-07-05
    165 
    166 * new check-attachment hook
    167 * configure times to be seen in 24h format
    168 * new mailinglist: supmua@googlegroups.com
    169 
    170 == 0.18.0 / 2014-05-19
    171 
    172 * new color option, :with_attachment for defining colors for the
    173   attachment character.
    174 * sup-tweak-labels works again (out of service since sync_back).
    175 * gem building is done through bundler
    176 * you can now kill a thread using & from thread_view
    177 
    178 == 0.17.0 / 2014-04-11
    179 
    180 * add continuous scrolling to thread view
    181 * add option for always editing in async mode
    182 * bugfix: fix completion char
    183 * bugfix: thread-view: dont close message when it is the first or last
    184 
    185 == 0.16.0 / 2014-03-21
    186 
    187 * sup-sync-back-mbox removed.
    188 * safer mime-view attachment file name handling
    189 * show thread labels in thread-view-mode
    190 * remove lock file if there is no sup alive
    191 * deprecate migration script on ruby > 2.1
    192 
    193 == 0.15.4 / 2014-02-06
    194 
    195 * Various bugfixes
    196 
    197 == 0.15.3 / 2014-01-27
    198 
    199 * Revert non-functioning hidden_alternates and fix some bugs.
    200 
    201 == 0.15.2 / 2013-12-20
    202 
    203 * Use the form_driver_w routine for inputing multibyte chars when
    204   available.
    205 * Add hidden_alternates configuration option: hidden aliases for the
    206   account.
    207 
    208 == 0.15.1 / 2013-12-04
    209 
    210 * Thread children are sorted last-activity latest (bottom).
    211 
    212 == 0.15.0 / 2013-11-07
    213 
    214 * Maildir Syncback has now been merged into main sup! This is a
    215   long-time waiting feature initially developed by Damien Leone,
    216   then picked up by Edward Z. Yang who continued development. Additionally
    217   several others have been contributing.
    218 
    219   Eventually, recently, Eric Weikl has picked up this branch, modernized
    220   it to current sup, maintained it and gotten it ready for release.
    221 
    222   Main authors:
    223 
    224   Damien Leone
    225   Edward Z. Yang
    226   Eric Weikl
    227 
    228   Not all of the features initially proposed have been included. This is
    229   to maintain compatibility with more operating systems and wait with
    230   the more daring features to make sure sup is stable-ish.
    231 
    232   This is a big change since sup now can modify your mail (!), please
    233   back up your mail and your configuration before using the maildir
    234   syncback feature. For instructions on how to migrate an existing
    235   maildir source or how to set up a new one, refer to the wiki:
    236 
    237   https://github.com/sup-heliotrope/sup/wiki/Using-sup-with-other-clients
    238 
    239   It is possible to both disable maildir syncback globally (default:
    240   disabled) and per-source (default: enabled).
    241 
    242 * Sup on Ruby 2.0.0 now works - but beware, this has not been very throughly
    243   tested. Patches are welcome.
    244 
    245 * We are now using our own rmail-sup gem with fixes for Ruby 2.0.0 and
    246   various warnings fixed.
    247 
    248 * sup-sync-back has been renamed to sup-sync-back-mbox to conform with
    249   the other sync-back scripts.
    250 
    251 * You can now save attachments to directories without specifying the full
    252   filename (default filename is used).
    253 
    254 * Various encoding fixes and minor bug fixes
    255 
    256 == 0.14.1.1 / 2013-10-29
    257 
    258 * SBU1: security release
    259 * Tempfiles for attachments are persistent through the sup process to
    260   ensure that spawned processes have access to them.
    261 
    262 == 0.13.2.1 / 2013-10-29
    263 
    264 * SBU1: security release
    265 
    266 == 0.14.1 / 2013-08-31
    267 
    268 * Various bugfixes.
    269 * Predefined 'All mail' search.
    270 
    271 == 0.14.0 / 2013-08-15
    272 
    273 * CJK compatability
    274 * Psych over Syck
    275 * Ruby 1.8 deprecated
    276 * Thread safety
    277 * No more Iconv, but using built in Ruby encodings. Better UTF-8
    278   handling.
    279 * GPGME 2.0 support
    280 
    281 == 0.13.2 / 2013-06-26
    282 
    283 * FreeBSD 10 comptability
    284 * More threadsafe polling
    285 
    286 == 0.13.1 / 2013-06-21
    287 
    288 * Bugfixes
    289 
    290 == 0.13.0 / 2013-05-15
    291 
    292 * Bugfixes
    293 * Depend on ncursesw-sup
    294 
    295 == 0.12.1 / 2011-01-23
    296 * Depend on ncursesw rather than ncurses (Ruby 1.9 compatibility)
    297 * Add sup-import-dump
    298 
    299 == 0.12 / 2011-01-13
    300 * Remove deprecated IMAP, IMAPS, and mbox+ssh sources
    301 * Inline GPG support
    302 * Robust maildir support
    303 * sup-dump compatibility between Sup versions
    304 * New hook: sendmail
    305 * Better Ruby 1.9/UTF8 support
    306 * As always, many bugfixes and tweaks.
    307 
    308 == 0.11 / 2010-03-07
    309 * Remove deprecated Ferret backend.
    310 * Add deprecation notices to IMAP, IMAPS, and mbox+ssh sources.
    311 * 256 color support.
    312 * Backwards-compatible index format improvements.
    313 * Saved searches.
    314 * Improved support for custom keybindings.
    315 * Idle detection - poll totals accumulate and index flushes on idle.
    316 * Several textfield improvments.
    317 * New hooks: publish, mentions-attachments, keybindings,
    318   index-mode-date-widget, gpg-args, and crypto-settings.
    319 * sup-cmd for easy programmatic access to a Sup index.
    320 * As always, many bugfixes and tweaks.
    321 
    322 == 0.10.2 / 2010-01-26
    323 * Update gem dependencies to pull in xapian-full and ncursesw instead of ferret
    324   and ncurses.
    325 * Fix a minor problem when running with Ruby 1.8.5.
    326 * Fix a warning.
    327 
    328 == 0.10.1 / 2010-01-24
    329 * Fix a missing file in the gem.
    330 
    331 == 0.10 / 2010-01-22
    332 * Make Xapian backend the default, and add deprecation notice to Ferret indexes.
    333 * Now Ruby 1.9 compatible (Xapian backend only).
    334 * Changes are now saved automatically to the index. Pressing "$" now just
    335   forces a flush of Xapian indexes, which can minimize quit time.
    336 * Fix problem with replying to Google Groups messages.
    337 * Allow toggling of line wrap. Useful for long URLs.
    338 * Multiple attachments can be added at once by specifying a wildcard.
    339 * New command to save all attachments at once.
    340 * As always, many bugfixes and tweaks.
    341 
    342 == 0.9.1 / 2009-12-10
    343 * Make textfield behave more like readline, including C-w
    344 * Add ask_for_to config option. You can set all ask_for_* options to false, and
    345   composing a message will go immediately to the editor.
    346 * RFC 2047 decode attachment file names
    347         * default ask_for_to to true
    348 * add undo power to thread-view-mode
    349 * display labels of polled messages
    350 * increase numbers in contact-list-mode
    351 * fix --compose option, and add a --subject option
    352 * include hook filename in error messages
    353 * As always, many bugfixes and tweaks.
    354 
    355 == 0.9 / 2009-10-01
    356 * Experimental Xapian backend to replace Ferret. Not everything works with it,
    357   but it's fast and less likely to barf. See release notes.
    358 * New keybinding: "G" for reply-all.
    359 * New hook: custom-search, for adding your own query expansions.
    360 * Better preemptive thread loading.
    361 * Random UI tweaks: display labels before subjects, change thread-view-mode's
    362   'n' and 'p' commands slightly
    363 * Better killing of other Sup processes.
    364 * Die gracefully upon SIGKILL.
    365 * Finally figure out the curses+ruby magic to make SIGWINCH (i.e. xterm
    366   resizing) work correctly.
    367 * Add a console mode (press ~) for interactively playing with the index.
    368 * Finally figure out the curses magic to stop the weird keyboard behavior after
    369   leaving the editor.
    370 * Improved logging. Logging now supports SUP_LOG_LEVEL environment variable.
    371   Set this to "debug" for verbiage.
    372 * As always, many bugfixes and tweaks.
    373 
    374 == 0.8.1 / 2009-06-15
    375 * make multibyte display "work" for non-utf8 locales
    376 * fix reply-mode always selecting "Customized"
    377 * reduce email quote parsing worst-case behavior
    378 
    379 == 0.8 / 2009-06-05
    380 * Undo support on many operations. Yay!
    381 * Mbox splitting fixes. No more "From "-line problems.
    382 * Mail parsing speedups.
    383 * Many utf8 and widechar fixes. Display of crazy characters should be pretty
    384   close.
    385 * Outgoing email with non-ASCII headers is now properly encoded.
    386 * Email addresses are no longer permanently attached to names. This was
    387   causing problems with automated email systems that used different names
    388   with the same address.
    389 * Curses background now retains the terminal default color. This also makes
    390   Sup work better on transparent terminals.
    391 * Improve dynamic loading of setlocale for Cygwin and BSD systems.
    392 * Labels can now be removed from multiple tagged threads.
    393 * Applying operations to tagged threads is now invoked with '='.
    394 * Buffer list is betterified and is now invoked with ';'.
    395 * Zsh autocompletion support.
    396 * As always, many bugfixes and tweaks.
    397 
    398 == 0.7 / 2009-03-16
    399 * Ferret index corruption issues fixed (hopefully!)
    400 * Text entry now scrolls to the right on overflow, i.e. is actually usable
    401 * Ctrl-C now asks user if Sup should die ungracefully
    402 * Add a limit:<int> search operator to limit the number of results
    403 * Added a --query option to sup-tweak-labels
    404 * Added a new hook: shutdown
    405 * Automatically add self as recipient on crypted sent messages
    406 * Read in X-Foo headers
    407 * Added global keybinding 'U' shows only unread messages
    408 * As always, many bugfixes and tweaks
    409 
    410 == 0.6 / 2008-08-04
    411 * new hooks: mark-as-spam, reply-to, reply-from
    412 * configurable colors. finally!
    413 * many bugfixes
    414 * more vi keys added, and 'q' now asks before quitting
    415 * attachment markers (little @ signs!) in thread-index-mode
    416 * maildir speedups
    417 * attachment name searchability
    418 * archive-and-mark-read command in inbox-mode
    419 
    420 == 0.5 / 2008-04-22
    421 * new hooks: extra-contact-addresses, startup
    422 * '!!' now loads all threads in current search
    423 * general state saving speedup
    424 * threads with unsent draft messages are now shown in red
    425 * --compose spawns a compose-message buffer on startup
    426 * Many bugfixes and UI improvements
    427 
    428 == 0.4 / 2008-01-23
    429 * GPG support for signing and encrypting outgoing mail
    430 * New hooks: mime attachment, attribution line
    431 * Improved local charset detection using gettext library
    432 * Better quoted region detection
    433 * Many bugfixes and UI improvements
    434 
    435 == 0.3 / 2007-10-29
    436 * In-buffer search (finally!)
    437 * Subscribe to/unsubscribe from mailing list commands.
    438 * IMAP speedups.
    439 * More hooks: set status bar, set terminal title bar, modify message headers
    440   and bodies before editing, etc.
    441 * Optionally use chronic gem to allow for natural-language dates in searches.
    442 * Many, many bugfixes and minor improvements.
    443 * Tomorrow is Sup's first birthday!
    444 
    445 == 0.2 / 2007-10-29
    446 * Complete hook system for user-inserted code.
    447 * GPG signature verification and decryption.
    448 * Automatically scold users who top-post.
    449 * Automatically warn when sending a message with words like
    450   "attachment" in the body if there aren't actually any attachments to
    451   the message.
    452 * Millions of bugfixes.
    453 
    454 == 0.1 / 2007-07-17
    455 * MIME attachment creation.
    456 * i18n support: character set conversion and rfc2047 header decoding.
    457 * Better MIME handling.
    458 * Multiple account support.
    459 * Locking and concurrent Sup process detection and killation.
    460 * Thread autoloading when you scroll down.
    461 * Batch deletion of messages marked deleted or spam from message
    462   sources via sup-sync-back tool (mbox only).
    463 * Millions of bugfixes.
    464 
    465 == 0.0.8 / 2007-04-01
    466 
    467 * Maildir support!
    468 * New command: sup-config. Interactively walks you through everything
    469   you need to get up and running.
    470 * Now proactive about notifying users of de-synced sources.
    471 * Renamed sup-import => sup-sync with a brand new, less illogical
    472   interface.
    473 * Added a sup-dump, to enable backing up and rebuilding indices from
    474   scratch (e.g. when Ferret upgrades break index formats).
    475 * More bugfixes. Will they ever end?
    476 
    477 == 0.0.7 / 2007-02-12
    478 
    479 * Split sup-import into two bits: sup-import and sup-add.
    480 * Command-line arguments now handled by trollop.
    481 * Better error handling for IMAP and svn+ssh.
    482 * Messages can now be moved between sources while preserving all
    483   message state.
    484 * New commands in thread-view-mode:
    485   - 'a' to add an email to the addressbook
    486   - 'S' to search for all email to/from an email address
    487   - 'A' to kill buffer and archive thread in one swell foop
    488 * Removed hoe dependency.
    489 
    490 == 0.0.6 / 2007-01-06
    491 
    492 * Very minor fix to support more types of IMAP authentication.
    493 
    494 == 0.0.5 / 2007-01-05
    495 
    496 * More bugfixes, primarily for IMAP.
    497 * doc/UserGuide.txt
    498 
    499 == 0.0.4 / 2007-01-03
    500 
    501 * Bugfixes, primarily for threaded networking.
    502 
    503 == 0.0.3 / 2007-01-02
    504 
    505 * Major speed increase for index views (inbox, search results), which
    506   are now loaded completely from the IR index. The only time the
    507   original sources need to be touched is when viewing a thread. This
    508   is important for slow sources like IMAP and mbox+ssh.
    509 * Remote mbox support with mbox+ssh URIs.
    510 * IMAP now actually works.
    511 * sup-import uses HighLine and is generally much improved.
    512 * Multitudinous minor bug fixes and improvements.
    513 
    514 == 0.0.2 / 2006-12-10
    515 
    516 * IMAP support
    517 * Better handling of broken sources. (Everything won't just die.)
    518 * You will need to rebuild both your index, and sources.yaml.
    519   Sorry!
    520 
    521 == 0.0.1 / 2006-11-28
    522 
    523 * Initial release. Unix-centrism, support for mbox only, no i18n.
    524   Untested on anything other than 1.8.5. Other than that, works great!