"Fossies" - the Fresh Open Source Software Archive

Member "s-nail-14.9.11/NEWS" (8 Aug 2018, 64482 Bytes) of package /linux/misc/s-nail-14.9.11.tar.xz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "NEWS": 14.9.10_vs_14.9.11.

    1 S - n a i l / S - m a i l x  N e w s
    2 ====================================
    3 
    4   mdocmx(7) anchors are denoted by a number-sign #: typing
    5   "^A ANCHOR" while reading the man(1)ual in a capable less(1)
    6   will scroll to the manual's Point-Of-Interest, and pointing
    7   a web- browser to the "#ANCHOR" of the online manual works.
    8 
    9 v14.9.11 ("Tit family enjoying a bath"), 2018-08-08
   10 ---------------------------------------------------
   11 
   12 A hot summer bugfix release, but it surely brings in some new
   13 features, like TLS fingerprinting and `digmsg' message access.
   14 
   15 An embarassing number of bugfixes have been seen, to fix IMAP UID
   16 handling on 32-bit hosts, UTF-8, `readall' with empty lines, rare
   17 endless iconv(3) loops, false qsort(3)ing of addressee lists,
   18 crashes due to false user shell quoting, acceptance of "0" port
   19 numbers, and more.  Most of these cases now have tests.
   20 
   21 Credits, in order of commit appearance: Paride Legovini,
   22 Andrew Gee, Olav Mørkrid, Kevin McCarthy, Michael Dressel,
   23 Jürgen Bruckner, Robert Elz, Rudolf Sykora, Doug McIlroy,
   24 Gavin Troy and Jörg Schilling.
   25 A special credit to Coverity.com again, it found a bug!
   26 (https://scan.coverity.com/projects/s-nail, project number 444.)
   27 
   28 We welcome Andrew Gee, Kevin McCarthy, Michael Dressel,
   29 Olav Mørkrid and Jürgen Bruckner in THANKS.
   30 
   31 NOTES, ChangeLog (packager-affine)
   32 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   33 
   34 - I have discovered that GnuPG can --export-secret-subkey so that
   35   the real/full private key is no longer needed to --sign, and the
   36   excerpts of the private one can have a different password, too.
   37   So i have created a new for-signing subkey: EEC8C2FF.
   38 
   39   Unfortunately it is not possible to verify new signatures with
   40   the old public key, an update is necessary.  For example via
   41     https://ftp.sdaoden.eu/steffen.asc
   42   or just update 1883A0DD via normal gpg(1).
   43 
   44 - Maildir support is now optional but default via OPT_MAILDIR.
   45   (Paride Legovini)
   46 
   47 - I hope for the last time there has been a change to SSL
   48   configuration: i have renamed all ssl* variables to tls*.
   49   The old ssl* ones still exist until v15, though, yet obsoletion
   50   warnings will be produced.
   51   This is so because i expect that in a not too distant future
   52   only the term TLS will be around.
   53 
   54   Also the term CipherList was falsely used, it should have been
   55   CipherString.
   56 
   57 - Most (if not all) commands which take a message list and a file
   58   target now use shell-style quoting.  (Before that say `copy'#157
   59   scanned backwards over "something possibly quoted", took that
   60   off, then treated the rest as a message list.  Now shell tokens
   61   are parsed starting at the front, the last is taken off, and
   62   anything before that is the message list.)  (Gavin Troy.  2013.)
   63 
   64 - `~^#? header show' now optionally show the address type in
   65   field 1.  This is backward-incompatible but _only_ applies to
   66   non-network addresses.
   67 
   68 - We will find ncurses on DragonFly BSD.
   69 
   70 - On Solaris tests no longer need GNU cksum(1): the Solaris cksum
   71   is different only for whitespace separators.  (Jörg Schilling)
   72 
   73 - Any generated files reside in .obj/, and the tests run in there,
   74   too.  A "rm -f .obj" should suffice to clean anything up.  Fast.
   75 
   76 ChangeLog
   77 ^^^^^^^^^
   78 
   79 - `~F'#318, `~f'#319, `~M'#324, `~m'#325, `~U'#333 and `~u'#334
   80   now default to the current message (the "dot").  (Andrew Gee)
   81 
   82 - *indentprefix*#428 handling has had its pitfalls when quoting
   83   messages.  (Andrew Gee)
   84 
   85 - -r#76 will again set *from*#410 even after -S#77 has been used
   86   to set *from*.  (Michael Dressel)
   87 
   88 - No longer process From: (*from*#410) content via alternates
   89   when Sender: (*sender*#510) is set.  (Michael Dressel)
   90 
   91 - Because the priority class of headers was not taken into
   92   account, it could happen that addressees in Cc: would remain but
   93   the same in To: were removed.  (Michael Dressel)
   94 
   95 - IMAP accounts for RFC 4551 (and 7162) and supports 64-bit
   96   UIDVALIDITY.
   97 
   98 - *spamfilter-rate-scanscore*#546 could crash if specification
   99   did not match program output.
  100 
  101 - Shims for TLSv1.3 support, e.g., for *tls-config-pairs*#558.
  102 
  103 - Obsoleted *dotlock-ignore-error*, added *dotlock-disable*#392.
  104   (Paride Legovini)
  105 
  106 - In compose-mode, removing the In-Reply-To: header breaks an old,
  107   and starts a new thread.  (Doug McIlroy)
  108 
  109 - Added new *forward-inject-tail*#409, *quote-inject-head*#493
  110   and *quote-inject-tail* variables, and extended the meaning
  111   of *quote*#489.
  112 
  113   All of *{forward,quote}-inject-{head,tail}* now support
  114   a compose-mode specific set of formats (see
  115   *quote-inject-head*#493), for now a few only.
  116   (This adds meaning onto the content of *forward-inject-head*#408
  117   as introduced in v14.9.0.)
  118 
  119   The generated output honours *quote-fold*#492, which now takes
  120   an optional third argument in order to produce better output.
  121 
  122   While here, introduce the new command escape `~Q'#327 which
  123   performs full *quote*#489 cycles on the given message list.
  124 
  125 - Fcc: headers are now understood in -t#79 templates or when
  126   placed in compose mode (`~v'#335, *editalong*#393 etc.).
  127   Since each such header only takes one addressee, no quoting
  128   issues apply, the entire header body is the value.
  129 
  130 - `~|'#310 will pass the entire message including headers when
  131   used as "~||", e.g., prepend a file-carbon-copy message header:
  132 
  133     ~|| echo Fcc: /tmp/test; cat
  134 
  135 - New `tls'#280 multiplexer command.  Yet primitive and only
  136   supports a `fingerprint' subcommand.  Supports `vput'#121.
  137 
  138   The new *tls-fingerprint*#562 variable chain aids in adding
  139   support for connection verification without an installed CA
  140   certificate pool in conjunction with the new
  141   *tls-fingerprint-digest*#563 chain.
  142 
  143   Consequently *smime-sign-message-digest* has been renamed to
  144   *smime-sign-digest*#530 (old version will cease in v15).
  145   The latter now defaults to SHA512 if possible.
  146 
  147 - New MLE commands mle-go-screen-bwd and mle-go-screen-fwd to go
  148   backward and forward one screenful.
  149   And a new mle-clear-screen command.  (Todd C. Miller)
  150 
  151 - New *expandaddr*#398 setting "shquote" will evaluate addresses
  152   as if specified within $'' shell-quotes for -b#57, -c#59,
  153   and all direct command line receivers.  This allows for, e.g.,
  154 
  155     $ s-nail -Sexpandaddr=shquote '\$contact-mail'
  156 
  157 - *quote-as-attachment*#490 no longer needs to be set before
  158   compose mode is entered in order to become honoured.
  159 
  160 - Even for -H#66 or -L#69 *folder-hook*#403s will now be called.
  161   Possible sorting is also applied.
  162 
  163 - `='#129 now optionally supports message list arguments and the
  164   `vput'#121 modifier in order to store the result list.
  165 
  166   The new `digmsg'#165 multiplexer adds some message access, just
  167   like `~^'#311 does in compose mode.  In fact the set of commands
  168   is shared, yet `digmsg' is only read-only and cannot access
  169   attachments until v15, however.  For example,
  170 
  171   ?0[steffen@essex nail.git]$ cat > /tmp/z.rc <<'_EOT'
  172   define one {
  173      if [ "${#}" -gt 0 ]
  174         digmsg create $1 - # no `read'/`readall' overlay but stdout
  175         #digmsg $1 header list
  176         digmsg $1 header show subject
  177         digmsg remove $1
  178         shift
  179         \eval xcall one "$@"
  180      \end
  181   }
  182   define all {
  183      local set all # localize this (localopts yes would do too)
  184      vput = all *
  185      echo all: $all
  186      eval call one $all
  187   }
  188 _EOT
  189   ?0[steffen@essex nail.git]$ MAILRC=/tmp/z.rc \
  190     .obj/s-nail -:u -Snoheader -Squiet -Rf /tmp/z
  191   ? call all
  192   all: 1 2 3
  193   212 Subject
  194   Re: [S-mailx] FYI: after USB stick loss i have rotated keys, plus
  195 
  196   212 Subject
  197   Re: Problem with page?
  198 
  199   212 Subject
  200   Re: s-nail Source ...
  201 
  202   ? x
  203 
  204 git(1) shortlog (edited)
  205 ^^^^^^^^^^^^^^^^^^^^^^^^
  206 
  207 Steffen Nurpmeso (203):
  208 81e5960e nail.1, nail.rc: fix spelling (Paride Legovini)
  209 bde9329f FIX hasty [ab7aab0e] (Account for drafted 64-bit IMAP UIDs..)..
  210 5169d3ba collect(): ~[FfMmUu]: should default to the "dot" (Andrew Gee)
  211 068d202d THANKS: Andrew Gee
  212 662d9762 send.c:sendpart(): fix *indentprefix* handling for SEND_QUOTE (Andrew
  213         Gee)
  214 ca61f59a Elder groff mdoc do not have str-Lb-libterminfo (Olav Mørkrid)
  215 a234b4ec GSSAPI: fix gss_buffer_desc usage (since EVER!) (Kevin McCarthy)..
  216 89fc94e7 THANKS: Kevin McCarthy
  217 4c67719c makefile: do not "exit 1" in __prestop, exit 0 instead (Paride
  218         Legovini)
  219 2978064a nail.1: clarify MBOX locking strategy (Paride Legovini)
  220 0994c919 n_utf8_to_utf32(): FIX extending cast, broken in [5f951f7b] (on
  221         2018-01-09!)
  222 92c49370 n_iconv_str(): FIX possible endless loop due to insufficient growth
  223 12216988 Fix: allow -r to set from after -Sfrom= (Michael Dressel)..
  224 8a5a123c THANKS: Michael Dressel
  225 c1737baf Do not process From: alternates if Sender: is set (Michael Dressel)..
  226 9e101e33 a_nag_elide_qsort(): FIX false sorting (Michael Dressel)..
  227 b6bc7c4e THANKS: Olav Mørkrid
  228 094689b0 quoteflt_dummy() usage: FIX usage without preceeding _reset() (Jürgen
  229         Bruckner)
  230 79717b95 THANKS: Jürgen Bruckner
  231 bfca0fae IMAP: account for RFC 4551 (and 7162): support 64-bit UIDVALIDITY
  232 4ed7448b resend_msg(): FIX: actually honour delayed errors!
  233 9408d084 _spamfilter_interact(): FIX: *spamfilter-rate-scanscore* could cause
  234         crashes..
  235 a94e7323 a_cmisc_echo(): for `echoerr', ensure *log-prefix* is placed
  236 8412796a n_cmd_arg_parse(): FIX token error -> crash, e.g. "-RX 'bind;echo $?'
  237         -Xx"..
  238 b4c80a76 c_readall(): FIX handling of empty lines (with test)
  239 12969c7a Add shims to support TLSv1.3 via OpenSSL
  240 a6bd8490 Add notes on (yet) impossible fullfillment of user glob desires
  241         (Robert Elz)
  242 bbc1b6b2 Now with `wysh set', obsolete `varedit'
  243 f4c83d11 Truly support timeout on connect(2)s (Olav Mørkrid)
  244 dbdf875c nail.1: *ssl-ca-dir* requires special preparation (Olav Mørkrid)
  245 7fde1386 cc-test.sh: add t_behave_quote_a_cmd_escapes() (Andrew Gee)
  246 7f32bdc4 make.rc,make-config.sh: add OPT_USAN (UndefinedBehaviorSanitizer)
  247 ea358268 ok_b_ssl_no_default_ca: forgot to make that obsolete! (Olav Mørkrid)
  248 2748ee6a a_main_getopt(): treat --version as -V
  249 bf3185a7 Drop $OSENV; instead stuff for *verbose* `version' (Paride Legovini)
  250 0f48cacd cc-test.sh: --check-only: keep files on err if in a repo (Paride
  251         Legovini)
  252 165f6c10 Some: fix loosing->losing typo (Paride Legovini)
  253 d363bd86 nail.1: (re)add doc. on PKCS#12 Cert/Key bundles (Rudolf Sykora)
  254 4602b425 nail.1: (re)add s_client certificate fetch (Olav Mørkrid)
  255 f1b42535 Obsolete *dotlock-ignore-error*, add *dotlock-disable* (Paride
  256         Legovini)
  257 083306aa Add OPT_MAILDIR, by default enabled (Paride Legovini)
  258 d4696774 In compose-mode, removing In-Reply-To: starts thread (Doug McIlroy)..
  259 7869c1c4 Support "#." message attachment <> the "dot"
  260 a0bce049 Add *forward-inject-tail*, *quote-inject-{head,tail}*, `~Q'..
  261 d7ec16ec *quote-fold*: add optional third argument to improve break algo
  262 e4a8ad28 make-release.txt: new signing OpenPGP subkey
  263 0065d878 Fix: allow -r to set from after -Sfrom=, II. (Michael Dressel)..
  264 6aa3e44a Do not process From: alternates if Sender: is set, II (Michael
  265         Dressel)
  266 10cdea44 a_nag_elide_qsort(): FIX false sorting, II (Michael Dressel)[..]
  267 3e0fa398 Fix (BWDIC!) `~^ header show': optionally show address type in field
  268         1..
  269 83f0ebaa Support Fcc: headers in -t'emplates and editor..
  270 8961182f `edit',`visual': do allow multiple edits in non-interactive mode
  271 5651b570 Add header editing for new `~||' (`~|' + |)
  272 3a68df5a a_sendout_attach_msg(): MIME for Content-Description:!
  273 3f85801e ([BWDIC!]) Big notational warp of SSL to TLS; drop rand EGD support
  274 bc2e369d Add `tls' command..
  275 059e5541 Add *tls-fingerprint-digest*;
  276         *smime-sign-message-digest*->*smime-sign-digest*
  277 a0efe35a MLE: add mle-go-screen-bwd and mle-go-screen-fwd
  278 23c1adaa Add *tls-fingerprint* chain for CA-less connection verifications
  279 7369013a MLE: add mle-clear-screen command (Todd C. Miller)..
  280 c065b8c6 (BWDIC!) Add support for BLAKE2* and SHA3-* MDigests..
  281 c00022e6 -b,-c,to-addr: support "as-if $''" via *expandaddr*=shquote
  282 c1ae14f0 (BWDIC!) n_msglist(): warp to shell quoting rules!
  283 f0e3b59e (BWDIC!) For -H and -L: call folder hook, (sort)++
  284 aaf632a5 Drop laststring()! (Gavin Troy; in December 2013!)
  285 6301c5f2 *quote-as-attachment*: handle in compose-mode, very last..
  286 52dfe017 With *posix* honour `alternates' only for replies/aliases (Michael
  287         Dressel)
  288 dee9c247 Solaris: native cksum(1) works with WS strip via sed(1) (Jörg
  289         Schilling)!
  290 ab0313ff `=': support `vput' and an optional <msglist> argument
  291 e92385e3 Add `digmsg', a yet primitive "message info digger"
  292 
  293 v14.9.10 ("(40th Mail anniversary) Blue tit"), 2018-03-25
  294 ---------------------------------------------------------
  295 
  296 On this day in 1978 Kurt Shoens placed the following comment in
  297 def.h (now it is in nail.h):
  298 
  299   /*
  300    * Mail -- a mail program
  301    *
  302    * Author: Kurt Shoens (UCB) March 25, 1978
  303    */
  304 
  305 v14.9.10 is mostly a stability and bugfix release.
  306 It has seen a full test series including Coverity.com scans.
  307 It fixes bugs i have introduced (also a double free in IMAP cache
  308 that i introduced for v14.9.* series to address Coverity CID
  309 1376978..).
  310 
  311 In the end i am saying thanks to Gunnar Ritter for the IMAP
  312 module, and absolutely especially his really neat idea of an IMAP
  313 cache including offline work queue.  (IMAP will nonetheless
  314 temporarily go in v15, but these ideas will come back thereafter.)
  315 I have gray hairs now.
  316 
  317 Credits, in order of commit appearance: William Yodlowsky,
  318 Stuart Henderson, Jörg Schilling, Viktor SZÉPE, Rich Felker,
  319 Ralph Corderoy and Philipp Gesang.
  320 
  321 A special credit to Coverity.com again.  Because:
  322     tcc is 618496 bytes, pcc is 851968+24576 bytes,
  323     but gcc is 73355264 bytes and clang is even
  324     147406848 bytes, i wonder why the latter two never
  325     said a word that would have addressed the pretty
  326     obvious CID 1387053!
  327     [Use of initialized value, the author.]
  328 
  329 We welcome Stuart Henderson and Philipp Gesang in THANKS.
  330 
  331 NOTES, ChangeLog (packager-affine)
  332 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  333 
  334 - The balls are now build with umask 0022 not 0027.
  335   (William Yodlowsky, Stuart Henderson)
  336 
  337 - One actual development of this version was the addition of
  338   multiple choice VAL_ues, as documented in make.rc.
  339   For now we have VAL_IDNA (for OPT_IDNA)
  340     VAL_IDNA="idnkit idn2 idn"
  341   and VAL_RANDOM (by itself)
  342     VAL_RANDOM="arc4 ssl libgetrandom sysgetrandom urandom builtin"
  343   (Stuart Henderson)
  344 
  345   In brief:
  346     The value is interpreted as a whitespace separated list of
  347     strings, like "idn2 idn idnkit", case is ignored, order is
  348     important.
  349     The special strings "all" and "any" as well as the empty value
  350     are wildcard matches; if any entry in the list is a wildcard
  351     match, the rest of the list is ignored.
  352 
  353     The special string "error" will abort configuration once its
  354     list position is reached; this is only supported if
  355     documented, and not with an accompanying OPT_ (which then
  356     offers "require", as below).
  357 
  358   Since this VAL_RANDOM approach is so much better i have dropped
  359   OPT_SSL_RANDOM and OPT_NOEXTRANDOM that were recently
  360   introduced again.  They were c..p.
  361 
  362 - Support for idnkit 2.3 has been added.
  363   Support for idnkit 1 (especially as idnkitlite) has been fixed.
  364 
  365 - For the first time this codebase should be able to handle
  366   invalid MBOX mailboxes (produced by, e.g., dma(1)) gracefully.
  367   I hope i have found all places (sic) where code has to be fixed.
  368   E.g., "? copy * INVALID-MBOX" now works.
  369   (Smalltalk already knew objects which know what they are doing
  370   are for the better...  This is v15, then.)
  371 
  372 - P.S.: the two FreeBSD test failures are noted in INSTALL.
  373 
  374 ChangeLog
  375 ^^^^^^^^^
  376 
  377 - *asksend*#357 will now really allow recomposing.
  378 
  379 - `help'#203 now supports recursive `commandalias'#154es, and
  380   command self-recursion detection now works differently, it has
  381   been false for something like
  382 
  383       commandalias x q; commandalias q echo au
  384 
  385   since q became expanded to `quit'#238 (alias expansion equals
  386   new command word).  New behaviour: we allow equals once:
  387 
  388     commandalias q q; commandalias x q; x
  389   ->
  390     x -> q -> q -> quit
  391 
  392 - *editalong*#393 can have a value, say "set editalong=v" and it
  393   will startup $VISUAL#604 not $EDITOR#582.
  394 
  395 - Path separators are now normalized, thus all places, including
  396   MLE tab-expansion ("On terminal control and line editor"#17),
  397   can expand something like "///t*////t*".
  398 
  399 - -E#62 flag will not be obsoleted.
  400   -D#60 flag has been reintroduced (sets *disconnected*#629 right
  401   away, was not reinstantiated with the rest of the IMAP support.)
  402 
  403 git(1) shortlog: Steffen Nurpmeso (71)
  404 
  405 v14.9.9 ("Marsh tit savours first spring sun, II") 2018-03-06
  406 -------------------------------------------------------------
  407 
  408 A bugfix release.
  409 I hope with this the fallout of the Christmas 2016 "address the
  410 Dr. Problem workshop" has been fully resolved and thus MIME for
  411 header address fields, even if iconv(3) is involved, been fully
  412 restored!  We have even more tests for this now.
  413 
  414 The release v14.9.8 was broken on big endian machines.
  415 I will remove the v14.9.8 balls from the server by the weekend.
  416 Sorry for the inconvenience!
  417 
  418 Credits, in order of commit appearance: Slavko, Matej Mužila,
  419 Rich Felker, Simon McVittie, Paride Legovini, Cág,
  420 Predrag Punosevac.
  421 
  422 We welcome Slavko, Matej Mužila, Rich Felker and Simon McVittie in
  423 THANKS.
  424 
  425 NOTES, ChangeLog (packager-affine)
  426 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  427 
  428 - The v14.9.* series called *pipe-TYPE/SUBTYPE*#471 handlers in
  429   display or quote mode with CR (carriage-return) bytes stripped
  430   because of a missing output file comparison check, which broke
  431   binary formats etc.  (Slavko)
  432 
  433 - We now have native support for Libidn2.  (Matej Mužila)
  434 
  435 - uname(1) is now hookable by setting the shell variable uname
  436   when calling make ("uname=MY-UNAME make config" etc.).
  437   (Simon McVittie)
  438 
  439   We no longer bake the kernel version into the binary, and
  440   `version'#293 includes uname(2) output.
  441   (Simon McVittie, Paride Legovini)
  442 
  443 - We now support a fallback P(seudo)R(andomNumber)G(enerator)
  444   initialization even if getrandom(2)/getrandom(3) has been found
  445   by the configuration, just like we do for "/dev/urandom" usage.
  446   This does not affect systems with arc4random(3) or OpenSSL
  447   random usage.  (David Čepelík, Simon McVittie)
  448 
  449   A new OPT_SSL_RANDOM make.rc variable, by default initialized to
  450   the value of OPT_SSL.
  451 
  452 ChangeLog
  453 ^^^^^^^^^
  454 
  455 - `~@'#309 list-edit behaviour in -##85 batch mode was broken.
  456 
  457 - Character set names will now undergo generic normalization,
  458   including stripping of iconv(3) //SUFFIXes.
  459 
  460 git(1) shortlog: Steffen Nurpmeso (33)
  461 
  462 v14.9.7 ("Marsh tit patiently scraping bark") 2018-02-16
  463 --------------------------------------------------------
  464 
  465 A maintenance release which fixes bugs and brings in features.
  466 
  467 Credits, in order of commit appearance: Alexander Harm,
  468 Viktor SZÉPE, Paul Eggert, Joseph Bisch, Paride Legovini,
  469 and Peter J. Holzer.
  470 A special credit to the disappearing mutt(1) bug tracker.
  471 And to Gmane.org for creating gmane.mail.s-mailx.general!
  472 
  473 Thanks Paride Legovini for becoming maintainer of the Debian port.
  474 
  475 We welcome Joseph Bisch, Paride Legovini, and Peter J. Holzer in
  476 THANKS.
  477 
  478 NOTES, ChangeLog (packager-affine)
  479 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  480 
  481 - The USB stick loss reported for v14.9.6 was fake news, so to
  482   say, the stick exists and therefore the old key is not
  483   compromised.
  484 
  485 - We are back at Gmane.org!
  486     news.gmane.org/gmane.mail.s-mailx.general
  487 
  488 - `history'#204 has learned to be context-sensitive a bit, and
  489   has two new subcommands, `load' and `save'.
  490 
  491     This is in parts backward incompatible because it needs a new
  492     *history-file*#416 format; however, the old format can be loaded
  493     yet compose-mode commands will not appear in compose mode no
  494     more.  Iirc you can start with an old format then `save' to
  495     the new, then replace the "d" in the first column with "c" for
  496     compose-mode commands which should appear correctly.
  497 
  498 - Obsoletion warnings for variables now happen at `set'#260
  499   time instead of when used.  Running once via -v#82 may
  500   be beneficial.
  501 
  502 - The saturation modifier of `vexpr'#294 is henceforth a prefix,
  503   the suffix version is obsolete (but still supported for a while).
  504 
  505 - A network address that contains no domain-, but only a valid local
  506   user <name> in angle brackets will be automatically expanded to
  507   a valid address when *hostname*#421 is set to a non-empty value;
  508   setting it to the empty value instructs us that the used *mta*#450
  509   (including builtin SMTP) will perform the necessary expansion.
  510   (Viktor SZÉPE)
  511 
  512   Note that *hostname*#421 as well as *smtp-hostname*#533
  513   will now undergo IDNA expansion if IDNA is supported.
  514 
  515   And *from*#410 and *sender*#510 are now verified at `set'#260
  516   time, not when used.  (Viktor SZÉPE)
  517 
  518 - The commit message in [d503bd82] is wrong, apologies to
  519   Paride Legovini.  The test(1) operator "-n" appeared in Seventh
  520   Edition UNIX, not V8 as falsely claimed.
  521 
  522 ChangeLog
  523 ^^^^^^^^^
  524 
  525 - Our `addrcodec'#134 parser chokes on lesser constructs.
  526 
  527 - Presence of command-line MTA arguments without *expandargv*#399
  528   are now a hard error.  It was my fault that this was not the
  529   default from the very start.  (Viktor SZÉPE)
  530 
  531 - Seen on the mutt bug tracker, we also still have had problems
  532   with time settings that cross 32-bit boundaries.  As that is
  533   in parts induced by the C standard, now implement those parts on
  534   our own, and be super careful in general.  (Joseph Bisch)
  535 
  536 - The `~@'#309 command escape did not shell-unquote the user input
  537   again and was thus a bit broken; message attachments also work
  538   again.
  539 
  540 - Support custom headers from the command line via -C#58.
  541   And *customhdr*#386 is verified upon `set'#260 time.
  542 
  543 - The simple builtin HTML viewer now supports <blockquote>
  544   elements, which many web mailers, most notably gmail, use for
  545   citation.  (Peter J. Holzer)
  546 
  547 git(1) shortlog: Paride Legovini (1), Steffen Nurpmeso (66)
  548 
  549 v14.9.6 ("Marsh tit abiding a snow storm"), 2017-12-05
  550 ------------------------------------------------------
  551 
  552 A bugfix release which fixes four serious and three other bugs.
  553 A few new features came in, too.
  554 
  555 Many thanks go to Ralph Corderoy who reported an issue that was
  556 caused by a terrible, terrible word reversal that i managed to
  557 produce in December 2016, and which caused the v14.9.x series to
  558 not MIME encode (non-address) content of address header fields!
  559 
  560 Credits, in order of commit appearance: Thomas Dickey,
  561 Andreas Baumann, Erich Eckner, Gaetan Bisson, Solar Designer, Cág,
  562 Ivan Tham, Ralph Corderoy and Doug McIlroy.
  563 
  564 We welcome Andreas Baumann, Erich Eckner, Solar Designer and Cág
  565 in THANKS.
  566 
  567 NOTES, ChangeLog (packager-affine)
  568 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  569 
  570 - After USB stick loss the authors OpenPGP key has been switched to
  571 
  572     pub   4096R/1883A0DD 2017-11-30 [expires: 2027-11-28]
  573           Key fingerprint =
  574             EE19 E1C1 F2F7 054F 8D39  54D8 3089 64B5 1883 A0DD
  575     uid                  Steffen Nurpmeso <steffen@sdaoden.eu>
  576 
  577 - $TMPDIR#602 no longer honoured for root runs.  (Solar Designer)
  578 
  579 - *mime-encoding*#448 defaults to quoted-printable again.  (Cág)
  580 
  581 - We _can_ MIME encode even header fields which contain addresses.
  582   Thanks to Ralph Corderoy we now also _do_ so again!
  583 
  584 ChangeLog
  585 ^^^^^^^^^
  586 
  587 - ***#336 now uses *ifs*#423 when splitting.
  588 
  589 - Freezing *ttycharset*#568 via -S#77 also survives using or
  590   setting any of $LC_ALL#584, $LC_CTYPE#585 and $LANG#586 during
  591   program startup.
  592 
  593 - New `local'#118 command modifier to localize changes.
  594   Yet supported only for `set'#260, i.e., we have gained
  595   macro-local variables.
  596 
  597 - `vexpr'#294 now supports a BASE#number notation for integers,
  598   like 16#AFFE as an alternative to 0xAFFE.
  599 
  600   Hint: variable settings can most often use several bases, too,
  601   e.g., i have "set mime-counter-evidence=0b1111".
  602 
  603 - Very simple form of *quote-chars*#491 to adjust our knowledge of
  604   what actually is to be treated as a quote character.
  605 
  606 - *mime-counter-evidence*#447 deep inspection (bit four) has
  607   been improved for the sole cases of quoting or displaying
  608   a message.  So messages with less than 25% of control characters
  609   and such will now be displayed (made printable).  This is yet
  610   not configurable nor do we have a way to easily access a message
  611   with more than that.  (Doug McIlroy)
  612 
  613 git(1) shortlog: Steffen Nurpmeso (44)
  614 
  615 v14.9.5 ("Marsh tit engaged with a peanut"), 2017-10-21
  616 -------------------------------------------------------
  617 
  618 A bugfix release which fixes two bugs which were cast in stone.
  619 A few compatibility improvements (AlpineLinux, Solaris).
  620 And minor features.
  621 
  622 Apologies to Jörg Schilling, a git bug i think it was who caused
  623 joining of changesets, losing a credit, and it had been pushed to
  624 [master] before the problem was realized.
  625 
  626 Credits, in order of commit appearance: Jörg Schilling,
  627 Doug McIlroy, Random832, Nick Stoughton and Ivan Tham.
  628 
  629 We welcome Nick Stoughton and Ivan Tham in THANKS.
  630 
  631 NOTES, ChangeLog (packager-affine)
  632 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  633 
  634 - New OPT_USE_PKGSYS option can be disabled to not automatically
  635   pick known package system paths (pkg(7), OpenCSW, schily).
  636   (Jörg Schilling)
  637 
  638 ChangeLog
  639 ^^^^^^^^^
  640 
  641 - The software indeed _never_ dealt with iconv(3) output character
  642   set errors (as opposed to invalid input character set byte
  643   sequences etc.) for the main message body!
  644   And I have missed that when i tweaked our iconv layer a bit!
  645 
  646 - Fixed a race condition with sigsuspend(2) that i could only see
  647   on OpenBSD.  config.h offers n_SIGSUSPEND_NOT_WAITPID, by the
  648   way, which saves some systemcalls and did not run races, but
  649   noone adjusts this file.
  650 
  651 - Message list specifications gained two new colon modifiers, one
  652   can now "search :Ll" to find "Mailing lists"#10.
  653   The *headline*#413 format %T now also uses L and l rather than
  654   S and L accordingly.
  655 
  656   New `addrcodec'#134 subcommand `skinlist' acts like `skin'
  657   but stores in *!*#339 *^ERR*#341-EXIST if the address is
  658   one of the known "Mailing lists"#10.
  659 
  660 - `echo'#172 family now supports `vput'#121 and *!*#339 error
  661   storage, offering some kind of printf(1) experience, almost.
  662 
  663 git(1) shortlog: Steffen Nurpmeso (35)
  664 
  665 v14.9.4 ("(5th anniversary) Marsh tit"), 2017-09-18
  666 ---------------------------------------------------
  667 
  668 This is an update feature release but which also ships a furious
  669 number of bug fixes, about six of which were pretty serious.  It
  670 also applies overall trimming, and improves configuration time
  671 compatibility on macOS.
  672 
  673 Thanks to Alexander Harm there is now a macOS Homebrew package.
  674 
  675 Credits, in order of commit appearance: Paul Vojta, Daniel Lublin,
  676 Alexander Harm, Norman Ramsey, Viktor Szépe, Rich Salz,
  677 David Čepelík, Ralph Corderoy, Stéphane Chazelas, Aharon Robbins,
  678 Ken Hornstein.
  679 
  680 We welcome Daniel Lublin, Alexander Harm, David Čepelík and
  681 Stéphane Chazelas in THANKS.
  682 
  683 NOTES, ChangeLog (packager-affine)
  684 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  685 
  686 - Out-of-tree builds have become possible via the new
  687   make-emerge.sh script:
  688 
  689   $ cd /tmp && mkdir build && cd build &&
  690     ~/src/nail.git/make-emerge.sh &&
  691     make tangerine DESTDIR=.ddir
  692 
  693   We now have a `citron' make target which is like `tangerine' but
  694   does not run the tests.
  695 
  696 - Configuration with OPT_AUTOCC honours $CC=cc. (Norman Ramsey)
  697 
  698 - SSL/TLS configuration has been revamped (again) in order to
  699   support new possibilities of OpenSSL (and LibreSSL) without
  700   ending up and introducing more and more variables.
  701 
  702   Instead we now have *ssl-config-pairs*#?, a comma-separated
  703   list of all options.  With e.g. OpenSSL 1.1.xx this will be
  704   directly passed through to SSL_CONF_cmd(), so there _anything_
  705   can be passed, otherwise we use a builtin parser to map.
  706   The new *ssl-features*#? states what is supported.  E.g.:
  707 
  708     if [ "$ssl-features" =% +ctx-set-maxmin-proto ]
  709       wysh set ssl-config-pairs='\
  710           CipherList=TLSv1.2:!aNULL:!eNULL:@STRENGTH,\
  711           Curves=P-521:P-384:P-256,\
  712           MinProtocol=TLSv1.1'
  713     else
  714       wysh set ssl-config-pairs='\
  715           CipherList=TLSv1.2:!aNULL:!eNULL:@STRENGTH,\
  716           Curves=P-521:P-384:P-256,\
  717           Protocol=-ALL\,+TLSv1.1 \, +TLSv1.2'
  718     endif
  719 
  720   OpenSSL v1.1.xx also introduces an interesting and neat idea to
  721   centralize SSL/TLS configuration of (all) programs in a single
  722   file.  This can be driven via *ssl-config-file*#? and the new
  723   *ssl-config-module*#? variables, several entries per program
  724   are allowed, see *ssl-config-module*#? for an example.
  725 
  726   New manual section "Encrypted network communication"#13.
  727 
  728 - Variables set or unset via -S#77 are now frozen until program
  729   startup is complete.
  730 
  731 ChangeLog
  732 ^^^^^^^^^
  733 
  734 - Historical behaviour of *askcc*#355 / *askbcc*#356 has been
  735   reintroduced.  (Norman Ramsey)
  736 
  737   A new *asksend*#357 variable will show a final header summary
  738   and allows reentering compose mode.  Set by default.
  739 
  740   POSIX mirrors *ask* onto *asksub*#359, so dropped" the former.
  741 
  742 - `~^'#311 no longer normalizes header names to titlecase.
  743 
  744 - We no longer generate charset=binary MIME parameters.
  745   This was introduced on 2013-01-02 and was i think owed to
  746   file(1)s -i output as i failed to find any other reference.
  747   (Normal Ramsey)
  748 
  749 - *mime-alternative-favour-rich*#446 now also works for handlers
  750   installed via *pipe-TYPE/SUBTYPE*#471. (Viktor Szépe)
  751 
  752 - v14.9.* series did not generate In-Reply-To: headers!
  753 
  754 - `alias'#135 now supports high-bit bytes and semicolon.
  755   Expect that at some later time the input must be valid according
  756   to the locale, though. (Norman Ramsey)
  757 
  758 - Combinations of *record*#497 could crash because of an
  759   unterminated variable function argument list. (Norman Ramsey)
  760 
  761 - New command `readall'#240 loads an entire file into a variable.
  762 
  763   *signature*#517 has been obsoleted.
  764 
  765 - `vexpr'#294 now supports negative arguments for the substring
  766   subcommand and adds trim, trim-front and trim-end subcommands.
  767 
  768 - `!'#125 can be used in send mode.
  769 
  770 - `~A'#312, `~a'#313, `~I'#322 and `~i'#323 will henceforth expand
  771   \t and \n only if *posix*#484 is set.
  772   Please use `set'#260 instead (with `wysh'#122, until v15).
  773 
  774 - New "The mime.types files"#35 type marker: @q ("quiet").
  775 
  776 git(1) shortlog (edited): Steffen (Daode) Nurpmeso (90)
  777 
  778 v14.9.3 ("Crested tit nibbling sunflower seeds"), 2017-08-03
  779 ------------------------------------------------------------
  780 
  781 This is a bugfix release but which ships some improvements, too.
  782 It silently replaces both of v14.9.1 v14.9.2 from earlier this
  783 week, which were broken or not entirely fixed.
  784 
  785 Credits, in order of commit appearance: Felix Fontein, Paul Vojta,
  786 Ralph Corderoy, Christos Zoulas, Gavin Troy, Gaetan Bisson.
  787 Thanks, Coverity.com.
  788 
  789 We welcome Christos Zoulas in THANKS.
  790 
  791 Apologies to Viktor Szépe for the false spelling of his name in
  792 the v14.9.0 announcement.
  793 And to Gaetan Bisson for not giving credit for [14fbce97]!
  794 
  795 NOTES, ChangeLog (packager-affine)
  796 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  797 
  798 - fakeroot support was blindly taken from Debian and broken.
  799   (Gavin Troy, Gaetan Bisson)
  800 
  801 - Base64 output was broken for cases which involved iconv(3).
  802   The data is not lost, you can read it with S-nail v14.9.0 and
  803   above, and save it somewhere.  I know of no other base64 decoder
  804   which reads those things correctly, though.  We now have tests.
  805   Along this i fixed an iconv(3) error which likely caused
  806   stateful decoding (like, e.g., for ISO-2022-JP) to fail because
  807   of an unnecessary reset of the iconv(3) state machine.
  808   Thanks to Gaetan Bisson for mentioning this issue!
  809 
  810 ChangeLog
  811 ^^^^^^^^^
  812 
  813 - In compose mode the MLE allows empty lines again.
  814 
  815 - We no longer require a writable $HOME#583.  Due to false code
  816   flow (but but but: with correct comment) a non-writable $HOME
  817   entry in /etc/password (i.e., from getpwuid(3)) would lead to
  818   a crash.  (Felix Fontain; Ralph Corderoy)
  819 
  820 - Two faulty string operations slipped into the IMAP code,
  821   resulting in a crash and a "is-same-host" test that would fail
  822   for IMAPS connections like `save'#257 or `copy'#157 because of an
  823   implicit IMAP protocol for the target of those operations (thus
  824   IMAP != IMAPS).  (Paul Vojta)
  825 
  826 - The MLE tab-expansion will now automatically append a "/" if
  827   there is only one possible expansion and that is a directory,
  828   saving the user one <TAB>.  (Christos Zoulas)
  829 
  830   The shell expression parser had a bug regarding understood
  831   metacharacters (;|&), which in turn could cause an infinite loop
  832   in the MLE tab-expansion for, e.g., "move &9 +<TAB>", because
  833   the "&" would never have been stepped over.
  834 
  835 - New `~I'#322 command escape is like `~i'#323 but does not append
  836   a newline.
  837 
  838 - `localopts'#209 gained an optional second argument.
  839   It is now possible to specify that any macro `call'#143ed
  840   will have localopts enabled, and it is possible to fixate the
  841   setting so that it cannot be reverted.
  842 
  843 - *@*#345 should now act completely compatible to the sh(1)ell,
  844   thus obsoleting my hysteric warnings in the v14.9.0 announcement.
  845 
  846 - The `Lreply'#210, `reply'#245, `Reply'#244 series as well as
  847   `mail'#212 now manage the error status *!*#339.
  848   I.e., there are now errors like *^ERR*#341-DESTADDRREQ,
  849   ^ERR-NODATA, ^ERR-PERM and similar.  It is not perfect yet,
  850   because $DEAD#581 may have been written (with *save*#505) or not,
  851   for example.
  852 
  853   `Lreply' and `reply' have been rewritten rather completely
  854   indeed.  They join Reply-To: and Mail-Followup-To: dependent on
  855   the context (i.e., *reply-to-honour*#503, *followup-to-honour*#406,
  856   see "Mailing lists"#10 for the picture), and if they did, use
  857   this list as the receivers exclusively.  It now honours
  858   *recipients-in-cc*#496 even for such addressees.  (And now i wonder
  859   whether i should have credited Paul Vojta for that.)
  860 
  861   Also `Lreply' would have crashed for mails with Reply-To: but
  862   without *reply-to-honour*#503 set.  We now have a test.
  863 
  864   Note *replyto* is obsoleted in favour of *reply-to*#502.
  865 
  866 v14.9.0 ("Long-tailed tit"), 2017-07-16
  867 ---------------------------------------
  868 
  869 This is a major feature release which took about ~22 months (24
  870 less two) of development to complete, and which imposed massive
  871 changes under the hood, but also quite a lot of user visible
  872 changes, including some **backward incompatibilities**.
  873 As usual, "s-nail -d" will show obsoletion warnings.
  874 
  875 We gain noticeable improvements regarding scriptability and its
  876 reliability, but also for interactive use cases, especially
  877 notable to users is our completely new M(ailx)L(ine)E(ditor) that
  878 supports rather real tabulator expansion and program-mode-context-
  879 sensitive key bindings.
  880 
  881 We now support macros with arguments, which can be `shift'ed,
  882 a `return' status can be used, and a `vexpr' multiplexer offers
  883 some arithmetic and string operations.  `commandalias'es are
  884 recursive, further command modifier prefixes, like `ignerr', give
  885 a hand that we otherwise could not offer.  In compose-mode the new
  886 `~^' command escape allows some message and attachment access, and
  887 can be used, e.g., to implement things like custom headers, and
  888 has been especially designed for scripted access via the new
  889 *on-compose-splice* and *on-compose-splice-shell* hooks.
  890 
  891 S-nail will move (more or less) backward-incompatibly to sh(1)ell
  892 compatible argument quoting (documented in "COMMANDS"), and an
  893 increasing number of commands do support this already: new ones
  894 exclusively, some old ones have either been switched (like
  895 `localopts'), others -- noticeably `set' -- can be switched to the
  896 new syntax with a `wysh' command modifier prefix.  E.g.:
  897 
  898   ? define __xv {
  899     # Be careful to choose sh(1)ell-style on _entire_ line!
  900      localopts yes; wysh set verbose; ignerr eval "${@}"; return $?
  901     }
  902   ? commandalias call echo boo-boo
  903   ? commandalias xv call __xv
  904   ? xv list
  905   ? commandalias xv '\'call __xv
  906   ? xv list
  907 
  908 Calling the latter `xv' for `list' will give more detailed command
  909 information, including which kind of argument is used.
  910 
  911 I have not managed to implement the three features i have started
  912 this development cycle for, these are thus subject to further
  913 development, just like wysh for message-list argument commands to
  914 support, e.g., negation, wysh for `if' and consorts, the --
  915 terminator to finally overcome the ridiculous requirement to quote
  916 entire shell commands filenames for commands like `pipe.
  917 And and and.
  918 
  919 Credits, in order of commit appearance: Antonio Radici,
  920 Aharon Robbins, Mike Frysinger, Predrag Punosevac, Michael Convey,
  921 Hariskar, Rudolf Sykora, Martin Neitzel, Gavin Troy,
  922 Salvatore Bonaccorso, Todd C. Miller, Sergey Matveev, Robert Elz,
  923 Mantas Mikulėnas, Respiranto, Jens Schleusener, Walter Alejandro
  924 Iglesias, Ralph Corderoy, David Levine, Lyndon Nerenberg,
  925 Thomas Dickey, Afan, Justin Ellingwood, Ingo Schwarze,
  926 Viktor Szépe, Gaetan Bisson, Juan RP, William Yodlowsky,
  927 Hilko Bengen, Matthew Dillon, Colin Watson, Donald Mugnai,
  928 Stephen Isard, Jürgen Daubert, Sven Neuhaus, trondd, Ismael Bouya,
  929 Felipe Gasper, Paul Eggert, Dr. Werner Fink, Ken Hornstein,
  930 Noel Chiappa, Random832, Doug McIlroy, Baptiste Daroussin,
  931 Riccardo Ductor, Pietro Cerutti, Jörg Schilling, rain1, Xin LI.
  932 
  933 We welcome Antonio Radici, Mike Frysinger, Predrag Punosevac,
  934 Michael Convey, Rudolf Sykora, Todd C. Miller, Robert Elz,
  935 Jens Schleusener, Walter Alejandro Iglesias, Thomas Dickey, Afan,
  936 Justin Ellingwood, Viktor Szépe, Juan RP, Matthew Dillon,
  937 Colin Watson, Donald Mugnai, Sven Neuhaus, Ismael Bouya,
  938 Felipe Gasper, Paul Eggert, Dr. Werner Fink, Ken Hornstein,
  939 Noel Chiappa, Random832, Doug McIlroy, Baptiste Daroussin,
  940 Riccardo Ductor, Pietro Cerutti, Jörg Schilling, rain1, and
  941 Xin LI in THANKS.
  942 
  943 Apologies: Sergey Matveev.
  944 Members of the Roff community which await progress.
  945 
  946 NOTES, ChangeLog (packager-affine)
  947 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  948 
  949 * This release brings some backward incompatibilities, outlined
  950   in the following.  Most users will not be affected, and we have
  951   added a lot of compatibility cruft, but that will vanish in v15.
  952   "$ s-nail -v"!
  953 
  954 * The configuration and build system has changed.
  955   Packagers have received updated package files.
  956 
  957   o Anything which was WANT_xy before is now OPT_xy, and
  958     compiled-in paths and values, like PREFIX or PAGER, have
  959     gained a VAL_ prefix (thus VAL_PREFIX and VAL_PAGER).
  960 
  961     This is _not_ true for non-persistent or environmental values,
  962     e.g., DESTDIR, CC, etc., and also not for the overwritable
  963     program variables during configuration, e.g., $awk.
  964 
  965   o SENDMAIL -> VAL_MTA, SENDMAIL_PROGNAME -> VAL_MTA_ARGV0,
  966     MAILSPOOL -> VAL_MAIL.
  967     And NAIL -> VAL_MAILX, though this is still a lie.
  968 
  969   o The make system now needs config..build..install or
  970     all..install or tangerine (config..build..test..install).
  971     Some constants which some experts may want to fine-tune have
  972     been moved to config.h.  Usual adjustments+doc via make.rc.
  973 
  974   o The `build' phase can be parallelized by setting the $MAKEJOBS
  975     environment variable, e.g., "make MAKEJOBS=-j4 build".
  976     Note this variable is not tracked in the configuration.
  977     (Gaetan Bisson)
  978 
  979   o Unless DESTDIR is set an uninstallation script will be
  980     installed along with the rest (see INSTALL file for more).
  981 
  982   o Set the new OPT_CROSS_BUILD to avoid feature runtime tests,
  983     only compile- and link-availability will be tested.  (Juan RP)
  984 
  985   o VERBOSE is implemented straight, but must be given at
  986     configuration time in order to become honoured.
  987     (William Yodlowsky)
  988 
  989   o ADDCFLAGS / ADDLDFLAGS -> EXTRA_CFLAGS / EXTRA_LDFLAGS.
  990 
  991   o The LD_LIBRARY_PATH etc. building processes will skip any path
  992     which contains the string "fakeroot".  (Hilko Bengen)
  993 
  994   o We honour a set $SOURCE_DATE_EPOCH#600 environment variable to
  995     an extend that allows reproducible tests, which is why the
  996     repository gained a [test-out] branch with some expected plain
  997     text outputs.  (reproducible-builds.org; Colin Watson)
  998 
  999     The new *log-prefix*#434 variable aids in improving the
 1000     reproducibility of error messages.
 1001 
 1002   o These are upward compatible changes.
 1003 
 1004 * "make OPENSSL_API_COMPAT=0x10100000 all" should work.
 1005 
 1006 * Internal and environment variables are now explicitly _defined_
 1007   and _tracked_ after variable handling has been rewritten
 1008   completely.  Notes:
 1009 
 1010   o This means that, e.g., "$ password=NOT_SECRET s-nail" will
 1011     **NOT** work no more, since *password*#469 is an internal
 1012     variable!
 1013 
 1014   o But if you do, e.g., "? set TMPDIR=~/tmp", then this will
 1015     also be reflected in the program environment (it is an
 1016     environment variable) and thus affect child processes.
 1017 
 1018   o Therefore we no longer have `setenv' and `unsetenv'.
 1019 
 1020   o To integrate any other environment variable transparently
 1021     into our variable management, the new command `environ'#180
 1022     needs to be used, e.g., "? environ set NEWVAR=value" or
 1023     "? environ link EXISTINGVAR".
 1024 
 1025 - -H#66 and -L#69 have been decoupled:
 1026    it used to be -e#63 -L#69 instead!
 1027 
 1028 - *NAIL_{HEAD,TAIL}* have been obsoleted in favour of
 1029   *message-inject-head*#442 and *message-inject-tail*#443.
 1030 
 1031   *NAIL_HIST{FILE,SIZE}* have been obsoleted in favour of
 1032   *history-file*#416 and *history-size*#419.
 1033 
 1034   *NAIL_EXTRA_RC* has been obsoleted in favour of
 1035   *mailx-extra-rc*#437.
 1036 
 1037   *batch-exit-on-error* has been obsoleted by *errexit*#396, which
 1038   works just like the POSIX sh(1)ell "set -e" construct; the
 1039   `ignerr'#117 command modifier (`-' for command escapes in compose
 1040   mode, and see below) can be used to ignore command errors even
 1041   then.  (This will remain even if we at some later time will
 1042   support at least some of the sh(1) constructs which "swallow"
 1043   failures with set -e.)
 1044 
 1045   *bsdannounce* is obsolete, the feature is integrated in
 1046   *header*#412 as this is much more useful.  (This is however also
 1047   dependent upon the also new but well-known $POSIXLY_CORRECT#598
 1048   <> *posix*#484, but that is just how it is; these affect more
 1049   behaviour, and increasing.)
 1050 
 1051 - Colour support has been changed backward in- and upward (from
 1052   user interface side) compatibly, see the manual section
 1053   "Coloured display"#18.
 1054 
 1055   + New commands: `colour'#152 and `uncolour'#153.
 1056     You can define context-sensitive, terminal-capability-
 1057     sensitive settings, e.g.:
 1058 
 1059       if terminal && [ "$features" =% +colour ]
 1060         colour iso  view-header ft=bold,fg=magenta,bg=cyan
 1061         colour 256  view-header ft=bold,fg=208,bg=230 subject,from
 1062         colour mono view-header ft=bold
 1063         colour mono view-header ft=bold,ft=reverse subject,from
 1064       endif
 1065 
 1066   + The variable *colour-pager*#382 defines whether colour and font
 1067     attribute sequences should be generated when viewing something
 1068     in $PAGER#596.
 1069 
 1070   + Set the variable *colour-disable*#381 to turn colour off
 1071     without affecting established settings.
 1072 
 1073   + It is deduced via termcap(5) (see below) whether the terminal
 1074     supports colors, e.g., "$ s-nail -Stermcap=Co#256".
 1075     This is also true if we don't have termcap support.
 1076 
 1077   + Support for 256-colour terminals. (Gavin Troy)
 1078 
 1079 - `source'#272 series support shell pipes if the last character
 1080    of the "filename" ends with a vertical bar |, e.g.,
 1081 
 1082       ? source 'gpg -qd ~/.s-nailrc-private.gpg |'
 1083 
 1084 - Shell pipes are also supported as targets for `move'#222,
 1085   `copy'#157 etc., yet unfortunately not with via a sh(1)ell token
 1086   parser, so that the target still has to be a single argument.
 1087 
 1088       ? copy . '| cat; echo huhu'
 1089 
 1090 - Support for custom headers via the new `~^'#311 compose-mode
 1091   command escape and in addition, or alternatively, with the
 1092   internal variable *customhdr*#386, which also can be covered by
 1093   `localopts'#209.  (Sergey Matveev)
 1094 
 1095   + Support of $ORGANIZATION has been dropped.
 1096 
 1097   + Command escape `~e'#317 supports _any_ header.
 1098 
 1099   + Command escape `~^'#311 supports _any_ header.
 1100 
 1101 - New -:#53 command line option can be used to more easily select
 1102   which startup files should be loaded, e.g., -:/ loads none.
 1103   (Robert Elz)
 1104 
 1105 - `account'#132s and *folder-hook*#403s now have `localopts'#209
 1106    enabled by default.
 1107 
 1108 - A first simple form of compose-mode hooks has been implemented:
 1109   *on-compose-enter*#462, *on-compose-leave*#463 and
 1110   *on-compose-cleanup*#461 can be set to macros which get invoked
 1111   at appropriate times.
 1112   For the `resend'#249 series there is *on-resend-enter*#467 and
 1113   *on-resend-cleanup*#466: this is very likely to change once
 1114   true message access is possible even in this mode.
 1115 
 1116   An even more powerful mechanism is available via the also new
 1117   *on-compose-splice*#464 and *on-compose-splice-shell*#465 hooks.
 1118   These are executed in child processes and communicate with the
 1119   parent via their standard input and output, and therefore can
 1120   do anything and act as if they were the user.
 1121 
 1122   `localopts'#209 are enabled and cannot be disabled (and extend
 1123   until the message is sent).
 1124   (Jens Schleusener, Rudolf Sykora)
 1125 
 1126     ? set on-compose-splice=ocs
 1127     ? define ocs {
 1128       read ver
 1129       echo Splice protocol version is $ver
 1130       echo '~^header list'
 1131       read hl; vput vexpr es substring "${hl}" 0 1
 1132       if [ "$es" != 2 ]
 1133         echoerr 'Failed to read header list, bailing out'
 1134         echo '~x'
 1135       elif [ "$hl" @i!% ' cc' ]
 1136         echo '~^header insert cc Diet is your <mirr.or>'
 1137         read es; vput vexpr es substr "${es}" 0 1
 1138         if [ "$es" != 2 ]
 1139           echoerr 'Failed to insert Cc:, bailing out'; echo '~x'
 1140         end
 1141       end
 1142     }
 1143 
 1144 - "The .netrc file"#37
 1145 
 1146   + gained support for comments.
 1147     (Walter Alejandro Iglesias, Ralph Corderoy)
 1148 
 1149   + `netrc'#225 now has a "load" subcommand.
 1150 
 1151   + the new *netrc-pipe*#456 obsoletes OPT_AGENT and
 1152     *agent-shell-lookup*, and can be used to load an encrypted
 1153     .netrc file, e.g.:
 1154 
 1155       ? set netrc-lookup netrc-pipe='gpg -qd ~/.netrc.gpg'
 1156 
 1157     I.e., this is in usual .netrc syntax and thus possibly much
 1158     nicer than saying "? source 'gpg -qd ~/.credentials.gpg |'".
 1159 
 1160 - termcap(5) / terminfo(5) support has been changed backward in-
 1161   and upward (from user interface side) compatibly, please read
 1162   "On terminal control and line editor"#17.
 1163 
 1164   + OPT_TERMCAP is by default enabled.
 1165     The new, by default enabled, configuration option
 1166     OPT_TERMCAP_VIA_TERMINFO can be used to (try to) use
 1167     terminfo(5) instead.
 1168 
 1169   + The variable *termcap*#549 can be used to freely define or
 1170     override terminal capabilities, and *termcap-disable*#551 will
 1171     disable interaction with the chosen library, leaving only
 1172     *termcap* in charge.
 1173 
 1174     To use the so-called ca-mode on supporting terminals,
 1175     effectively turning S-nail into a fullscreen application,
 1176     *termcap-ca-mode*#550 must be set.
 1177 
 1178   + The built-in line editor has been rather completely rewritten
 1179     to be the Mailx-Line-Editor (OPT_MLE, default yes), and
 1180     supports wide glyphs (if possible), infinite line lengths
 1181     (2 GB) and more.  Tabulator expansion is no longer an option
 1182     (but needs fnmatch(3)).
 1183 
 1184   + Optionally (OPT_KEY_BINDINGS, default yes) it has become
 1185     possible to freely define key bindings for the MLE via the new
 1186     `bind'#141 and `unbind'#142 commands.  These key bindings can
 1187     make use of termcap(5) and/or terminfo(5) names.  The MLE will
 1188     install a set of default bindings (unless there is a set
 1189     *line-editor-no-defaults*#433), more so with OPT_TERMCAP,
 1190     i.e., try "? bind*".
 1191 
 1192     Sufficient support provided, one can now, e.g., type "p " and
 1193     then collect the message numbers to type, scrolling forward
 1194     and backward via key-bindings, without losing the line
 1195     content, then commit the final line.
 1196 
 1197   + OPT_EDITLINE and OPT_READLINE support have been dropped.
 1198     The new MLE should not miss anything.  Does it?
 1199     Tip: in an UTF-8 locale try "? !touch /tmp/hall{,öchen}" and
 1200     then autocomplete that: once, then ^Q, and again.
 1201 
 1202 - `source'#272 can be used in `call'#143ed macros.
 1203   What sounds so innocent replaced an entire machinery and got rid
 1204   of a brilliant idea of Kurt Shoens from the 70s, but which never
 1205   worked with Nail/Heirloom extensions, namely macros, and in the
 1206   right order.
 1207   Accompanying this -X#83 can (dig multiline arguments and can) be
 1208   used to define macros and run them etc.  Should work:
 1209 
 1210     $ s-nail -X'define x {' -Xversion -Xx -X'}' -X'call x'
 1211     $ s-nail -X'source \' -X'"echo version|"' -Xx
 1212 
 1213   Macros can be `undefine'#162d from within themselves, and re-
 1214   `define'#161d.  It is still not possible to define macros
 1215   from within macros, and/or have inner macros, not to talk
 1216   about local scoping or anything more sophisticated such.
 1217 
 1218 - -u#80 / $LOGNAME#589 ($USER) handling has been redefined,
 1219   and "-u USER" is now exactly the same as "-f %USER", and
 1220   $LOGNAME (and $USER) is actively set to the active user.  (Afan)
 1221 
 1222   $LOGNAME#589 is POSIX standardized and henceforth used and
 1223   preferred over $USER, which came from BSD.  (Todd C. Miller)
 1224 
 1225 - In the future (at least non-message-list) argument handling will
 1226   be changed backward-incompatibly to be sh(1)ell compatible (and
 1227   thus POSIX standardized), see "Shell-style argument quoting"#23.
 1228   New commands use it already today (`bind'#141, `colour'#152,
 1229   `headerpick'#200), some others (most importantly, `set'#260) can
 1230   be forced to do so via the new `wysh'#122 command prefix, as in:
 1231 
 1232     ? wysh set message-inject-tail=$'\n--steffen'
 1233     ? bind base $'\cA,\x61' 'echo control-A and small a'
 1234 
 1235 - We now actively manage *umask*#570: 0077 by default, but an
 1236   empty string will use the setting that is active upon startup.
 1237   Just like changes to (known) environment variables, this setting
 1238   will also be inherited by any child process.
 1239   (Walter Alejandro Iglesias)
 1240 
 1241 - Anything SENDMAIL / *sendmail*-ish has been renamed to *mta*#450,
 1242   *mta-arguments*#451, *mta-no-default-arguments*#452 and
 1243   *mta-argv0*#454.
 1244 
 1245   The reason is that in v15 we won't even have *smtp*: it is just
 1246   another form of MTA, and thus obsolete by itself.
 1247   Note that *mta-arguments* is now parsed via the shell-token
 1248   parser, so the following ends up exactly as desired.
 1249 
 1250     ? set mta-arguments='-t -X "/tmp/my log"'
 1251 
 1252   For now we support a hack that understands a file:// URL in
 1253   *mta*, too, but that is also the default if there is no protocol.
 1254   E.g.: "? set mta=smtp://a:b@xy.z"
 1255 
 1256 - The "spamd" *spam-interface*#536 is obsolete.  I haven't tested
 1257   it since my main machine died, it is error prone since it assumes
 1258   internals of the spamassassin wire protocol, and there never was
 1259   a speed improvement over "spamc".  (However it could react upon
 1260   the "is-spam" state of a message, which "spamc" doesn't allow.)
 1261 
 1262 - The new *inbox*#427 variable will henceforth be looked up when
 1263   searching for a primary system mailbox (as in "? File %"),
 1264   followed by the usual $MAIL#590 and compile-time defined local
 1265   mailspool search.  (Stephen Isard, Jürgen Daubert)
 1266 
 1267 - The semantic of -a#55 and `~@'#309 have been changed, and both
 1268   commands now use the same syntax:
 1269 
 1270     -a file[=input-charset[#output-charset]]
 1271 
 1272 - New "failinvaddr" keyword for *expandaddr*#398.
 1273 
 1274 - We finally "can" the so-called (by myself) "Dr. Problem" (a bit):
 1275   (Dr. Werner Fink)
 1276 
 1277     $ </dev/null s-nail -d:/ -sTrödler 'Dr. D. Iet <z@a.k>' 2>&1 |\
 1278       grep To:
 1279     s-nail: >>> To: "Dr. D. Iet" <z@a.k>
 1280 
 1281   This can be done via the new `addrcodec'#134, too, note this
 1282   supports multiple modes (and the `vput'#121 command modifier):
 1283 
 1284     $ echo 'addrcodec e Dr. Diet <to@fu.soj> Curd' | s-nail -#:/
 1285     "Dr. Diet Curd" <to@fu.soj>
 1286 
 1287 - All commands with the string "codec" in their name use different
 1288   argument quoting, namely none at all, please read
 1289   "Raw data arguments for codec commands"#25.
 1290   This means that `urlcodec'#290 (and `imapcodec'#628) has
 1291   slightly changed semantics.
 1292   And, while here: there is a new `shcodec'#262, too.
 1293 
 1294 - We gained "Command modifiers"#21: `\'#116 (avoid expansion of
 1295   `commandalias'#154es), `vput'#121 (store result in variable),
 1296   `ignerr'#117  (ignore an error of the following command, even
 1297   if the new *errexit*#396 is set), `wysh'#122 (use shell-style
 1298   arguments).
 1299 
 1300     $ echo 'vput cwd resvar;echo $resvar' | s-nail -#:/
 1301     /home/steffen/src/nail.git
 1302 
 1303   And the usual sh(1) stuff: `return'#255, `shift'#266, `eval'#182,
 1304   plus a `xcall'#298 stack-avoidance optimization (to be used in
 1305   place of a `call'#143 which would be the last called command).
 1306   And an "expr(1) like thing", yet simple, `vexpr'#294.
 1307 
 1308     $ echo 'vexpr + 1 2' | s-nail -#:/
 1309     00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000011
 1310     03 | 0x3 | 3
 1311     $ echo 'vput vexpr resvar + 1 2;echo $resvar' | s-nail -#:/
 1312     3
 1313 
 1314   We actually start walking (*?*#338, *^*#340).
 1315 
 1316     ? vput vexpr res regex 'bananarama' 'Bana(.+)' '\$1\$0'
 1317     ? echo $?/$^ERRNAME :$res:
 1318     1/NODATA ::
 1319     ? vput vexpr res iregex 'bananarama' '(.+)rama' '\$1\$0'
 1320     ? echo $?/$^ERRNAME :$res:
 1321     0/NONE :bananabananarama:
 1322 
 1323   The command `vpospar'#295 can be used to manage the stack of
 1324   positional parameters, i.e., much like "set --".
 1325   It also offers the possibility to save and restore the stack to
 1326   and from variables.  Etc.
 1327 
 1328   Btw., to contact the maintainer (make.rc variables
 1329   VAL_CONTACT_WEB and VAL_CONTACT_MAIL):
 1330 
 1331     ? echo $contact-web; eval mail $contact-mail
 1332 
 1333 - `if'#206 no longer performs automatic number conversion, we
 1334   use the explicit -lt, -gt etc. syntax of the sh(1).
 1335   Note: `if' will change to be almost identical to sh(1) if(1),
 1336   so please ensure proper test bracketing, even if it is less
 1337   convenient.
 1338 
 1339   Moreover, the default string comparison mode has changed to
 1340   case-sensitive, just like in the shell.  This is because in the
 1341   future this crux with trigger characters will vanish and `if'
 1342   etc. will simply slurp in already expanded shell tokens, it will
 1343   act like the shell in that respect.  We have modifiers, though,
 1344   yet only "@i" for case-insensitivity, also for regex matches:
 1345 
 1346     LC_ALL=C
 1347     i=`LC_ALL=C.utf8 s-nail -:/ -# -X '
 1348        \define cset_test {
 1349           \if [ "${ttycharset}" @i=% utf ]
 1350              \echo $LC_ALL
 1351              \xit 0
 1352           \end
 1353           \if [ "${#}" -gt 0 ]
 1354              \wysh set LC_ALL=${1}
 1355              \shift
 1356              \eval xcall cset_test "${@}"
 1357           \end
 1358           \xit 1
 1359        }
 1360        \call cset_test C.UTF-8 POSIX.utf8 POSIX.UTF-8 \
 1361           en_EN.utf8 en_EN.UTF-8 en_US.utf8 en_US.UTF-8
 1362    '`
 1363    [ $? -eq 0 ] && UTF8_LOCALE=$i
 1364 
 1365   Please note the `eval' in 'eval xcall cset_test "${@}".  This is
 1366   a difference of S-nail/mailx and the sh(1)ell that will remain,
 1367   as documented in "COMMANDS"#20: whereas the shell implements
 1368   a language and performs standardized expansions on the line
 1369   until finally the command is called, S-nail will decide the type
 1370   of command line parsing dependent on the seen command, and will
 1371   then perform a single expansion.  Therefore "${@}" will expand
 1372   to multiple arguments if $# is greater 0, but it will expand to
 1373   the empty string otherwise, which is not furtherly expanded away
 1374   since it is meaningless like it is in the shell: therefore $#
 1375   will be 1 (the empty string) not 0.
 1376 
 1377 - Using an explicit proto:// prefix should get you the desired
 1378   thing apart of *newfolders*#457, e.g.:
 1379 
 1380     ? File maildir:///tmp/x.mdir
 1381     ? copy * file:///tmp/x.mbox
 1382 
 1383 - New variable *record-files*#498 can be set to extend the meaning
 1384   of *record*#497.  *record-resent*#499 was there already.
 1385 
 1386 - New variable *ifs*#423 acts a bit like the sh(1)ell's $IFS for,
 1387   e.g., the new `read'#239 command.
 1388 
 1389   There is a `readctl'#241 command which can be used to manage
 1390   the active channel used by `read'#239.
 1391 
 1392 - The `~' alias for `call'#143 is gone.
 1393 
 1394 - `mimetype'#214 only allows specification of a single type per
 1395   call, on the other hand no need to quote that.
 1396 
 1397 - `mimeview'#218 must now be used explicitly to look at any
 1398   non-text MIME part, for normal display etc. purposes we only
 1399   support "copiousoutput"#615 MIME handlers.
 1400 
 1401 - New *socks-proxy*#535 can be used to proxy all network traffic
 1402   over a SOCKS5 proxy.  (Gaetan Bisson)
 1403 
 1404 ChangeLog
 1405 ^^^^^^^^^
 1406 
 1407 - The manual has seen another major overhaul, all the variables
 1408   are now documented in a single, sorted list, and many
 1409   clarifications should have been added.  I hope it has become
 1410   a better read.
 1411   (Predrag Punosevac, Michael Convey, Hariskar, Rudolf Sykora,
 1412   Respiranto, Thomas Dickey, Donald Mugnai)
 1413 
 1414 - To support RFC 1524 a.k.a. .mailcap files (see below) many
 1415   "trigger"-characters have been added for *pipe-TYPE/SUBTYPE*#471,
 1416   which may (rarely) affect existing values.
 1417   The .mailcap support itself is not yet implemented.
 1418 
 1419 - *mime-counter-evidence*#447 gained bit 4 (perform proper in-depth
 1420   content inspection as necessary; set to 0xE for all bits).
 1421   (Aharon Robbins)
 1422 
 1423 - Maildir paths are now created recursively as necessary.
 1424   (Justin Ellingwood)
 1425 
 1426 - -M#70 and -m#71 options have been added to enforce a special
 1427   send mode that will flag standard input / the given file with
 1428   the specified / detected MIME 'Content-Type:'.  This can be used
 1429   to directly send, e.g., HTML log output.
 1430   (Viktor Szépe, Ralph Corderoy)
 1431 
 1432 - Disallow symlinks on writable files.  Note this requires
 1433   O_NOFOLLOW support for the operating-system-call open(2), but
 1434   which has been standardized a long time ago.
 1435   (Matthew Dillon)
 1436 
 1437 - `retain'#254, `ignore'#207 etc. now differentiate in between
 1438   From (the From: header) and From_ (the MBOX ident).
 1439 
 1440   In fact we now have a new `headerpick'#200 command which
 1441   is a multiplexer for all retain and ignore lists used, call it
 1442   without arguments to see the current setting(s).
 1443   In v15 only `headerpick' and the standard-imposed wrappers
 1444   `retain' and `ignore' will remain, all other wrappers will
 1445   vanish.  Regular expressions can now be used if available:
 1446 
 1447     ? headerpick
 1448       headerpick type retain blahblahblah cc date from \
 1449         mail-followup-to message-id openpgp reply-to subject to \
 1450         user-agent
 1451       #headerpick type ignore currently covers no fields
 1452       #headerpick save retain currently covers no fields
 1453       headerpick save ignore '^Original-.*$' '^X-.*$' '^DKIM.*$'
 1454       headerpick forward retain cc date from list-id \
 1455         mail-followup-to openpgp reply-to subject to
 1456       #headerpick forward ignore currently covers no fields
 1457 
 1458 - `top'#282 has been rewritten completely, `Top'#281 is new.
 1459   It uses a built-in set of retain/ignore headers, but it is
 1460   possible to register a custom set via `headerpick'#200.
 1461   Also, *toplines*#566 has been extended a bit and the new
 1462   *topsqueeze*#567 variable may pimp your `top' experience.
 1463 
 1464     ? headerpick top retain add subject
 1465     ? top
 1466     [-- Message  1 -- 87 lines, 4791 bytes --]:
 1467     Subject: Re: I can't dist to myself
 1468 
 1469     I wrote:
 1470         3.22. bounce_delivered
 1471 
 1472 - `features' has been dropped, `version'#293 extended.
 1473 
 1474 - The *prompt*#486 handling has changed: we lost the capability to
 1475   expand \?, \@ and \$, instead new "private" variables *?*#338,
 1476   *account*#349, *mailbox-resolved*#436 and
 1477   *mailbox-display*#435 have been introduced, and the prompt
 1478   is completely shell expanded (thus twice with `wysh' or in v15),
 1479   as if dollar-single-quote quoted.  We do support the reverse-
 1480   solidus escaped bracket notation for embedding characters which
 1481   should not be counted when calculating the width of the prompt.
 1482   The `colour'#152 command has a slot for the prompt colour.
 1483   We gained *prompt2*#487 as a second level prompt.
 1484 
 1485     ? var prompt
 1486     wysh set \
 1487       prompt='?\${?}!\${!}[\${account}#\${mailbox-display}]? '
 1488 
 1489 - The filename "-" can be used as a receiver, e.g.,
 1490 
 1491     $ echo Hey,\ you | s-nail -:/ -Sexpandaddr -sUB -
 1492 
 1493 - The -s#78 command line option, the `~s'#331 command escape
 1494   as well as the corresponding slots of `~^'#311 will actively
 1495   strip [\r\n] from their value (Debian #419840).
 1496 
 1497 - New `read'#239 and `echoerr'#173 commands, mostly for
 1498   *on-compose-splice*#464.
 1499   But also `echon'#174 and `echoerrn'#175, which do not write
 1500   a trailing newline.
 1501 
 1502 - New variable *r-option-implicit*#495 may be helpful to those
 1503   who regulary need the functionality of the -r#76 command
 1504   line option.  (Felipe Gasper, Martin Neitzel)
 1505 
 1506 - By using new "pseudo-URLs" one can automatize the use of S/MIME
 1507   keys / (certificates / intermediate include certificates) with
 1508   passwords.  E.g., to drive bob@exam.ple, set
 1509   *smime-sign-cert-bob@exam.ple* to the private key / certificate
 1510   pair as usual, the password lookup will then be performed for
 1511   bob@exam.ple.smime-cert-key, bob@exam.ple.smime-cert-cert and
 1512   bob@exam.ple.smime-include-certs.
 1513   Like this the password can be stored in an encrypted .netrc file
 1514   when *netrc-lookup*#455 and *netrc-pipe*#456 are set, or it may
 1515   be stored in an encrypted resource file that has been loaded via
 1516   `source'#272 as a simple *password*#469 variable.
 1517 
 1518   Note that the prompting that happens as a last resort of
 1519   password lookup will still interfere with a possibly running
 1520   $PAGER#596 instance, dependent on the setting of *crt*#385, of
 1521   course.  Proper job control handling and recognizing that we are
 1522   running $PAGER when doing that prompt is a TODO for v15.  Sorry.
 1523 
 1524 - Some commands, like `set'#260, `help'#203, `list'#208,
 1525   `mlist'#216 etc., now react upon the setting of *verbose*#573
 1526   and(/or) *debug*#389.
 1527 
 1528 - `write'#297 uses iconv(3) as appropriate.
 1529 
 1530 - *mbox-rfc4155*#439 has first been dropped, and was then
 1531   reintroduced with different semantics.  Because, it can be
 1532   helpful if a messed up MBOX is read, in which case we henceforth
 1533   will warn you and point you to this:
 1534 
 1535     ? define mboxfix {
 1536       \localopts yes; \wysh set mbox-rfc4155;\
 1537         \wysh File "${1}"; \eval copy * "${2}"
 1538     }
 1539     ? call mboxfix /tmp/bad.mbox /tmp/good.mbox
 1540 
 1541   P.S.  Here you see how weird the current thing still is, in v15:
 1542 
 1543     ? define mboxfix {
 1544       localopts yes; set mbox-rfc4155; File "${1}"; copy * -- "${2}"
 1545     }
 1546 
 1547   And also in v15 we will not apply (proper) so-called MBOXO
 1548   quoting, but instead (simply MIME) re-encode mail messages.
 1549 
 1550 - `call_if'#144 is new and, different to "? ignerr call", silent
 1551   and not messing with the return status.
 1552 
 1553 - The new *smime-ca-flags*#521 and *ssl-ca-flags*#? can be used
 1554   to fine-tune X509_STORE_set_flags(3) a.k.a the X509 CA
 1555   certificate verification.
 1556 
 1557     ? set ssl-ca-flags=partial-chain
 1558     ? wysh set smime-ca-flags="${ssl-ca-flags}"
 1559 
 1560   Also, *ssl-curves*#? for TLSv1.3.
 1561 
 1562 - Socket connections use TLS S(erver)N(ame)I(ndication) as
 1563   appropriate (RFC 7817).
 1564 
 1565 - `alternates'#137 checks arguments and supports `vput'#121.
 1566   It by default no longer replaces but appends alternates, unless
 1567   *posix*#484 mode is active.  There is a new `unalternates'#138
 1568   command to remove alternates.
 1569 
 1570 - A new `charsetalias'#147 command.  (Pietro Cerutti, mutt#3925)
 1571 
 1572 - New commands `filetype'#187 and `unfiletype'#188: in the future
 1573   we will no longer know any builtin filetypes, in fact we already
 1574   simulate .gz etc. via the new mechanism as necessary:
 1575 
 1576     ? filetype \
 1577        bz2 'bzip2 -dc' 'bzip2 -zc' \
 1578        gpg 'gpg -d' 'gpg -e' \
 1579        gz 'gzip -dc' 'gzip -c' \
 1580        xz 'xz -dc' 'xz -zc' \
 1581        zst 'zstd -dc' 'zstd -19 -zc' \
 1582        zst.pgp 'gpg -d | zstd -dc' 'zstd -19 -zc | gpg -e'
 1583 
 1584 - `~<'#306 now offers a "- [HERE-delimiter]" mode for pasting etc.
 1585   (Ralph Corderoy)
 1586 
 1587 - `exit'#183 and `quit'#238 take an optional exit status.
 1588   (That is not fixated yet, though.)
 1589 
 1590 - We have a useful -h / --help output.  (Doug McIlroy)
 1591 
 1592 - *encoding* obsoleted in favour of new *mime-encoding*#448, which
 1593   now defaults to base64.
 1594 
 1595 - *allnet*#351 now works (broken since nail 10.00, 2002-09-29).
 1596 
 1597 Appendix
 1598 ^^^^^^^^
 1599 
 1600 The complete changelog of commits in between two versions OLD and
 1601 NEW can be inspected by using the git(1) `log' command:
 1602 
 1603   $ git log --reverse --topo-order --abbrev-commit OLD..NEW
 1604   # Only topic branch headers (--no-merges for content commits only):
 1605   $ git log --oneline --reverse --topo-order --merges OLD..NEW
 1606   # Same, but truly accessible:
 1607   $ git log --oneline --reverse --topo-order --merges --parents OLD..NEW |
 1608     while read c1 c2 c3 c4 c5 c6; do
 1609       printf "%-24s: \$ git log --oneline --no-merges %s ^%s\n" \
 1610         "${c6}" "${c1}" "${c2}";
 1611     done
 1612 
 1613 Entries for releases before v14.9.0 have been cut off and can be
 1614 found in the git(1) repository:
 1615 
 1616   v14.8.0 - v14.8.16: $ git show v14.8.16:NEWS
 1617   v13     - v14.8.5 : $ git show v14.8.5:NEWS
 1618   9.0     - 12.5    : $ git show heirloom:ChangeLog
 1619 
 1620 Also accessible via HTTPS?, just replace X.Y.Z accordingly:
 1621 
 1622   \https?://git.sdaoden.eu/cgit/s-nail.git/tree/NEWS?h=vX.Y.Y
 1623 
 1624 For even older releases you need to look into the [timeline]
 1625 branch, but no changelog has been administrated for them.
 1626 
 1627 # s-tm-mode