I am enormously happy of having merged the current state of
affairs into [master], and being able to hereby release
v14.9.0-pre4, the fourth preview of the «Long-tailed tit».

  Preview 4, 2017-04-13(+55min):
  This is not a release candidate because some functionality is
  missing still:
  - the ~^ command escape needs new subcommands remove-at and
    remove-addrs, so that, e.g., the new *alternates* variable
    list can be manually removed with a single command.
  - the command escapes must learn to manage $? and $!.
  - also, i want a `-' command modifier for command escapes, in
    equal spirit to the new `ignerr' command modifier, so that,
    e.g., "~-:noSuchCommand" will effectively be "ignerr
    noSuchCommand" and thus not exit even with *ignerr* set.
    The interaction of *errexit* and command escapes is not yet
    proper.  (And i hope the `-' is known from `make', sigh.)
  - disable all MIME handlers which do not integrate into normal
    output, i.e., are not "copiuous" output.  This of course
    requires a new `mimeview' or similar command, and this is
    a problem: we have it all, but the code paths have nothing in
    common.  But i will not ship 14.9.0 with the current,
    completely unrestricted MIME handlers enabled.
  - try (hard) to reinstantiate IMAP.

  + If you tried something with -pre3, and it did not work: please
    try again!

This is a major feature release which took about ~19 months (21
less two) of development to complete, and which imposed massive
changes under the hood, but also quite a lot of user visible
changes, including some **backward incompatibilities**.

It brings noticeable improvements regarding scriptability and its
reliability, but also for interactive use cases, especially
notable to users is our completely new M(ailx)L(ine)E(ditor) that
supports rather real tabulator expansion and program-mode-context-
sensitive key bindings.

We now support macros with arguments, which can be `shift'ed,
a `return' status can be used, and a `vexpr' multiplexer offers
some arithmetic and string operations.  `commandalias'es are
recursive, further command modifier prefixes, like `ignerr', give
a hand that we otherwise could not offer.  In compose-mode the new
`~^' command escape allows some message and attachment access, and
can be used, e.g., to implement things like custom headers, and
has been especially designed for scripted access via the new
*on-compose-splice* and *on-compose-splice-shell* hooks.  

S-nail will move (more or less) backward-incompatibly to sh(1)ell
compatible argument quoting (documented in "COMMANDS"), and an
increasing number of commands do support this already: new ones
exclusively, some old ones have either been switched (like
`localopts'), others -- noticeably `set' -- can be switched to the
new syntax with a `wysh' command modifier prefix.  E.g.:

  ? define __xv {
     localopts yes; wysh set verbose; ignerr eval "${@}"; return $?
  }
  ? commandalias call echo boo-boo
  ? commandalias xv call __xv
  ? xv list
  ? wysh ghost xv '\'call __xv
  ? xv list

Calling this `xv' for `list' will give more detailed command
information, including which kind of argument is used.

I have not managed to implement the three features i have started
this development cycle for, these are thus subject to further
development, just like wysh for message-list argument commands to
support, e.g., negation, and wysh for `if' and consorts.

Credits, in order of commit appearance: Antonio Radici,
Aharon Robbins, Mike Frysinger, Predrag Punosevac, Michael Convey,
Hariskar, Rudolf Sykora, Martin Neitzel, Gavin Troy,
Salvatore Bonaccorso, Todd C.  Miller, Sergey Matveev, Robert Elz,
Mantas Mikulėnas, Respiranto, Jens Schleusener, Walter Alejandro
Iglesias, Ralph Corderoy, David Levine, Lyndon Nerenberg,
Thomas Dickey, Afan, Justin Ellingwood, Ingo Schwarze,
Viktor Szépe, Gaetan Bisson, Juan RP, William Yodlowsky,
Hilko Bengen, Matthew Dillon, Colin Watson, Donald Mugnai,
Stephen Isard, Jürgen Daubert, Sven Neuhaus, trondd, Ismael Bouya,
Felipe Gasper, Paul Eggert, Dr. Werner Fink, Ken Hornstein,
Noel Chiappa, Random832, Doug McIlroy, Baptiste Daroussin,
Riccardo Ductor and Pietro Cerutti.

We welcome Antonio Radici, Mike Frysinger, Predrag Punosevac,
Michael Convey, Rudolf Sykora, Todd C. Miller, Robert Elz,
Jens Schleusener, Walter Alejandro Iglesias, Thomas Dickey, Afan,
Justin Ellingwood, Viktor Szépe, Juan RP, Matthew Dillon,
Colin Watson, Donald Mugnai, Sven Neuhaus, Ismael Bouya,
Felipe Gasper, Paul Eggert, Dr. Werner Fink, Ken Hornstein,
Noel Chiappa, Random832, Doug McIlroy, Baptiste Daroussin,
Riccardo Ductor and Pietro Cerutti in THANKS.

Apologies: Sergey Matveev.
Members of the Roff community which await progress.

  mdocmx(7) anchors are denoted by a number-sign #: typing
  "^A ANCHOR" while reading the man(1)ual in a capable less(1)
  will scroll to the manual's Point-Of-Interest, and pointing
  a web- browser to the "#ANCHOR" of the online manual works.

NOTES, ChangeLog (packager-affine)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* This release brings some backward incompatibilities, outlined
  in the following.

* The configuration and build system has changed:

  o Anything which was WANT_xy before is now OPT_xy, and
    compiled-in paths and values, like PREFIX or PAGER, have
    gained a VAL_ prefix (thus VAL_PREFIX and VAL_PAGER).

    This is _not_ true for non-persistent or environmental values,
    e.g., DESTDIR, CC, etc, and also not for the overwritable
    program variables during configuration, e.g., $awk.

  o SENDMAIL -> VAL_MTA, SENDMAIL_PROGNAME -> VAL_MTA_ARGV0,
    MAILSPOOL -> VAL_MAIL.
    And VAL_NAIL -> VAL_MAILX, though this is still a lie.

  o The make system now needs config..build..install or
    all..install or tangerine (config..build..test..install).

  o The `build' phase can be parallelized by setting the $MAKEJOBS
    environment variable, e.g., "make MAKEJOBS=-j4 build".
    Note this variable is not tracked in the configuration.
    (Gaetan Bisson)

  o Set the new OPT_CROSS_BUILD to avoid feature runtime tests,
    only compile- and link-availability will be tested.  (Juan RP)

  o VERBOSE is implemented straight, but must be given at
    configuration time in order to become honoured.
    (William Yodlowsky)

  o ADDCFLAGS / ADDLDFLAGS -> EXTRA_CFLAGS / EXTRA_LDFLAGS.

  o The LD_LIBRARY_PATH etc. building processes will skip any path
    which contains the string "fakeroot".  (Hilko Bengen)

  o We honour a set $SOURCE_DATE_EPOCH#? environment variable.
    (reproducible-builds.org; Colin Watson)

    For reproducability of error messages, the new *log-prefix*
    variable can be set.

  o These are upward compatible changes.

  o "make OPENSSL_API_COMPAT=0x10100000 all" should work.

- To support RFC 1524 a.k.a. .mailcap files (see below) many
  "trigger"-characters have been added for *pipe-TYPE/SUBTYPE*#?,
  which may (rarely) affect existing values.
  The .mailcap support itself is not yet implemented.

- *NAIL_{HEAD,TAIL}* have been obsoleted in favour of
  *message-inject-head*#? and *message-inject-tail*#?.

- *NAIL_HIST{FILE,SIZE}* have been obsoleted in favour of
  *history-file*#? and *history-size*#?.

- -H#? and -L#? have been decoupled:
   it used to be -e#? -L#? instead!

- Colour support has been changed backward in- and upward (from
  user interface side) compatibly, see the manual section
  "Coloured display"#?.

  + New commands: `colour'#? and `uncolour'#?.
    You can define context-sensitive, terminal-capability-
    sensitive settings, e.g.:

      if terminal && [ "$features" @= +colour ]
        colour iso  view-header ft=bold,fg=magenta,bg=cyan
        colour 256  view-header ft=bold,fg=208,bg=230 subject,from
        colour mono view-header ft=bold
        colour mono view-header ft=bold,ft=reverse subject,from
      endif

  + The variable *colour-pager*#? defines whether colour and font
    attribute sequences should be generated when viewing something
    in $PAGER#?.

  + Set the variable *colour-disable*#? to turn colour off
    without affecting established settings.

  + It is deduced via termcap(5) (see below) whether the terminal
    supports colors, e.g., "s-nail -Stermcap=Co#256".
    This is also true if we don't have termcap support.

  + Support for 256-colour terminals. (Gavin Troy)

- `source'#? series support shell pipes if the last character
   of the "filename" ends with a vertical bar |, e.g.,

      ? source 'gpg -qd ~/.s-nailrc-private.gpg |'

- Shell pipes are also supported as targets for `move'#?,
  `copy'#? etc., e.g.,

      ? copy . '| cat; echo huhu'

- Support for custom headers via the new ~^#? compose-mode
  command escape and in addition, or alternatively, with the
  internal variable *customhdr*#?, which can be covered by
  `localopts'#?.
  (Sergey Matveev)

  + Support of $ORGANIZATION has been dropped.

  + In compose mode ~e#? supports _any_ header.

  + In compose mode ~^#? supports _any_ header.

- New -:#? command line option can be used to more easily select
  which startup files should be loaded, e.g., -:/ loads none.
  (Robert Elz)

- `account'#?s and *folder-hook*#?s now have `localopts'#?
   enabled by default.

- A first simple form of compose-mode hooks has been implemented:
  *on-compose-enter*#? and *on-compose-leave*#? can be set to
  macros which get invoked at appropriate times, with
  `localopts'#? enabled (which extend until the message is sent).

  An even more powerful mechanism is available via the also new
  *on-compose-splice* and *on-compose-splice-shell* hooks, e.g.,
  (Jens Schleusener, Rudolf Sykora)

    ? set on-compose-splice=ocs
    ? define ocs {
      read ver
      echo Splice protocol version is $ver
      echo '~^header list'
      read hl; vput vexpr es substr "${hl}" 0 1
      if [ "$es" != 2 ]
        echoerr 'Failed to read header list, bailing out'; echo '~x'
      end
      if [ "$hl" !@ ' cc' ]
        echo '~^header insert cc Diet is your <mirr.or>'
        read es; vput vexpr es substr "${es}" 0 1
        if [ "$es" != 2 ]
          echoerr 'Failed to insert Cc:, bailing out'; echo '~x'
        end
      end
    }

- "The .netrc file"#?

  + gained support for comments.
    (Walter Alejandro Iglesias, Ralph Corderoy)

  + `netrc'#? now has a "load" subcommand.

  + the new *netrc-pipe*#? obsoletes OPT_AGENT and
    *agent-shell-lookup*, and can be used to load an encrypted
    .netrc file, e.g.:

      ? set netrc-lookup netrc-pipe='gpg -qd ~/.netrc.gpg'

    E.g., this is in usual .netrc syntax and thus possibly much
    nicer than saying "source 'gpg -qd ~/.credentials.gpg |'".

- termcap(5) / terminfo(5) support has been changed backward in-
  and upward (from user interface side) compatibly, please read
  "On terminal control and line editor"#?

  + OPT_TERMCAP is by default enabled.
    The new, by default enabled, configuration option
    OPT_TERMCAP_VIA_TERMINFO can be used to (try to) use
    terminfo(5) instead.

  + The variable *termcap*#? can be used to freely define or
    override terminal capabilities, and *termcap-disable*#? will
    disable interaction with the chosen library, leaving only
    *termcap* in charge.

  + The builtin line editor has been rather completely rewritten
    to be the Mailx-Line-Editor (OPT_MLE, default yes), and
    supports wide glyphs (if possible), infinite line lengths
    (2 GB) and more.  Tabulator expansion is no longer an option
    (but needs fnmatch(3)).

  + Optionally (OPT_KEY_BINDINGS, default yes) it has become
    possible to freely define key bindings for the MLE via the new
    `bind'#?  and `unbind'#? commands.  These key bindings can
    make use of termcap(5) and/or terminfo(5) names.  The MLE will
    install a set of default bindings, more so with OPT_TERMCAP,
    try "bind*".

    Sufficient support provided, one can now, e.g., type "p " and
    then collect the message numbers to type, scrolling forward
    and backward via key-bindings, without loosing the line
    content, then commit the final line.

  + OPT_EDITLINE and OPT_READLINE support have been dropped.
    The new MLE should not miss anything.  Does it?
    Tip: in an UTF-8 locale try "touch /tmp/hall{,öchen}" and then
    autocomplete that: once, then ^Q, and again.

- `source'#? can be used in `call'#?ed macros.
  What sounds so innocent replaced an entire machinery and got rid
  of a brilliant idea of Kurt Shoens from the 70s, but which never
  worked with Nail/Heirloom extensions, namely macros, and in
  right order.
  Accompanying this -X#? can be used to define macros and run
  them etc.  Should work:

    $ s-nail -X'define x {' -Xversion -Xx -X'}' -X'call x'
    $ s-nail -X'source \' -X'"echo version|"' -Xx

- Internal and environment variables are now explicitly _defined_
  and _tracked_ after variable handling has been rewritten
  completely.

  + Notes:
    o This means that, e.g., "password=NOT_SECRET s-nail" will
      **NOT** work no more, since *password*#? is an internal
      variable!

    o But if you do, e.g., "set TMPDIR=~/tmp", then this will
      also be reflected in the program environment (it is an
      environment variable) and thus affect child processes.

    o Therefore we no longer have `setenv' and `unsetenv'.

    o To integrate any other environment variable transparently
      into our variable management, the new command `environ'#?
      needs to be used, e.g., "environ set NEWVAR=value" or
      "environ link EXISTINGVAR".

  + -u#? / $LOGNAME#? ($USER) handling has been redefined,
    and "-u USER" is now exactly the same as "-f %USER", and
    $LOGNAME (and $USER) is actively set to the active user.
    (Afan)

    $LOGNAME#? is POSIX standardized and henceforth used and
    preferred over $USER, which came from BSD.  (Todd C. Miller)

- In the future (at least non-message-list) argument handling will
  be changed backward-incompatibly to be sh(1)ell compatible (and
  thus POSIX standardized), see "Shell-style argument quoting"#?.
  New commands use it already today (`bind'#?, `colour'#?,
  `headerpick'#?), some others (most importantly, `set'#?) can
  be forced to do so via the new `wysh' command prefix, as in:

    ? wysh set message-inject-tail=$'\n--steffen'
    ? bind base $'\cA,\x61' 'echo control-A and small a'

- We now actively manage *umask*#?: 0077 by default, but an
  empty string will use the setting that is active upon startup.
  Just like changes to (known) environment variables, this setting
  will also be inherited by any child process.
  (Walter Alejandro Iglesias)

- Anything SENDMAIL / *sendmail*-ish has been renamed to *mta*#?,
  *mta-arguments*#?, *mta-no-default-arguments*#? and
  *mta-argv0*#?.

  The reason is that in v15 we won't even have *smtp*: it is just
  another form of MTA, and thus obsolete by itself.
  Note that *mta-arguments* is now parsed via the shell-token
  parser, so the following ends up exactly as desired.

    ? wysh set mta-arguments='-t -X "/tmp/my log"'

  For now we support a hack that understands a file:// URL in
  *mta*, too, but that is also the default if there is no protocol.
  E.g.: "set mta=smtp://a:b@xy.z"

- The "spamd" *spam-interface*#? is obsolete.  I haven't tested
  it since my main machine died, it is error prone since it assumes
  internals of the spamassassin wire protocol, and there never was
  a speed improvement over "spamc".  (However it could react upon
  the "is-spam" state of a message, which "spamc" doesn't allow.)

- The new *inbox*#? variable will henceforth be looked up when
  searching for a primary system mailbox (as in "File %"),
  followed by the usual $MAIL#? and compile-time mailspool
  search.  (Stephen Isard, Jürgen Daubert)

- New "failinvaddr" keyword for *expandaddr*#?.

- We finally "can" the so-called (by myself) "Dr. Problem" (a bit):
  (Dr. Werner Fink)

    $ echo|./s-nail -:/ -sTrödel -dSencoding=8bit \
      'Dr. Diet Curd <t...@fu.soj>' 2>&1|\
    grep To:
    s-nail: >>> To: "Dr. Diet Curd" <t...@fu.soj>

  This can be done via the new `addrcodec'#?, too:

    $ echo 'addrcodec e Dr. Diet <t...@fu.soj> Curd'|./s-nail -#:/
    "Dr. Diet Curd" <t...@fu.soj>

- All commands with the string "codec" in their name use different
  argument quoting, namely none at all, read "Raw data arguments
  for codec commands"#?.

- We gained "Command modifiers"#?: `\'#? (avoid `commandalias'#?
  expansion), `vput'#? (store result in variable), `ignerr'#?
  (ignore an error of the following command, even if the new
  *errexit*#? is set), `wysh'#? (use shell-style arguments).

    $ echo 'vput cwd resvar;echo $resvar' | ./s-nail -#:/
    /home/steffen/src/nail.git

  And the usual sh(1) stuff: `return'#?, `shift'#?, `eval'#?,
  plus a `xcall'#? stack-avoidance optimization.
  And an "expr(1) like thing": `vexpr'#?.

    $ echo 'vexpr + 1 2' | ./s-nail -#:/
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000011
    03 | 0x3 | 3
    $ echo 'vput vexpr resvar + 1 2;echo $resvar' | ./s-nail -#:/
    3

  We actually start walking (?#?, *^*#?).

    ? vput vexpr res regex 'bananarama' 'Bana(.+)' '\$1\$0'
    ? echo $?/$^ERRNAME :$res:
    1/NODATA ::
    ? vput vexpr res iregex 'bananarama' '(.+)rama' '\$1\$0'
    ? echo $?/$^ERRNAME :$res:
    0/NONE :bananabananarama:

- `if'#? no longer performs automatic number conversion, we
  use the explicit -lt, -gt syntax of the sh(1).
  Note: `if' will change to be almost identical to sh(1) if(1),
  so please ensure proper bracket quoting, even if it is less
  convenient.

ChangeLog
^^^^^^^^^

- The manual has seen another major overhaul, all the variables
  are now documented in a single, sorted list, and many
  clarifications should have been added.  I hope it has become
  a better read.
  (Predrag Punosevac, Michael Convey, Hariskar, Rudolf Sykora,
  Respiranto, Thomas Dickey, Donald Mugnai)

- *mime-counter-evidence*#? gained bit 4 (perform proper in-depth
  content inspection as necessary; set to 0xE for all bits).
  (Aharon Robbins)

- Maildir paths are now created recursively as necessary.
  (Justin Ellingwood)

- -M#? and -m#? options have been added to enforce a special
  send mode that will flag standard input / the given file with
  the specified / detected MIME 'Content-Type:'.  This can be used
  to directly send, e.g., HTML log output.  Note that before v15
  this is quite restricted: you are not free to do anything.
  (Viktro Szépe, Ralph Corderoy)

- Disallow symlinks on writable files (O_NOFOLLOW open(2)).
  (Matthew Dillon)

- `retain'#?, `ignore'#? etc. now differentiate in between
  From (the From: header) and From_ (the MBOX ident).

- In fact we now have a new `headerpick'#? command which
  is a multiplexer for all retain and ignore lists used, call it
  without arguments to see the current setting of them all.
  In v15 only `headerpick' and the standard-imposed wrappers
  `retain' and `ignore' will remain, all other wrappers will
  vanish.  Regular expressions can now be used if available:

    0[ich /var/spool/mail/steffen]? headerpick
    headerpick type retain add blahblahblah cc date from \
      mail-followup-to message-id openpgp reply-to subject to \
      user-agent
    #headerpick type ignore currently covers no fields
    #headerpick save retain currently covers no fields
    headerpick save ignore add '^Original-.*$' '^X-.*$'
    headerpick forward retain add cc date from list-id \
      mail-followup-to reply-to subject to openpgp
    #headerpick forward ignore currently covers no fields

- `top'#? has been rewritten completely, `Top'#? is new.
  It uses a builtin set of retain/ignore headers, but it is
  possible to register a custom set via `headerpick'#?.
  Also, *toplines*#? has been extended a bit and the new
  *topsqueeze*#? variable may pimp your `top' experience.

    ? headerpick top retain add subject
    ? top
    [-- Message  1 -- 87 lines, 4791 bytes --]:
    Subject: Re: I can't dist to myself

    I wrote:
        3.22. bounce_delivered

- `features' has been dropped, `version'#? extended.

- The *prompt*#? handling has changed: we lost the capability to
  expand \?, \@ and \$, instead new "private" variables *?*#?,
  *account-name*#?, *mailbox-resolved*#?  and
  *mailbox-display*#? have been introduced, and the prompt
  is completely shell expanded (thus twice with `wysh' or in v15),
  as if dollar-single-quote quoted.  We do support the reverse-
  solidus escaped bracket notation for embedding characters which
  should not be counted when calculating the width of the prompt.
  The `colour'#? command has a slot for the prompt colour.
  We gained *prompt2*#? as a second level prompt.

    ? var prompt
    ? wysh set prompt='?\${?}[\${account} \${mailbox-display}]? '

- The filename "-" can be used as a receiver, e.g.,

    echo 'From Blödel'|s-nail -:/ -Sexpandaddr -Sencoding=8b -sUB -

- The -s#? command line option, the ~s#? command escape
  as well as the corresponding slots of ~^#? will actively
  strip [\r\n] from their value (Debian #419840).

- New `read'#? and `echoerr'#? commands, mostly for
  *on-compose-splice*#?.
  But also `echon'#? and `echoerrn'#?, which don't write
  a trailing newline.

- New variable *r-option-implicit*#? may be helpful to those
  who regulary need the functionality of the -r#? command
  line option.  (Felipe Gasper, Martin Neitzel)

- By using new "pseudo-URLs" one can automatize the use of S/MIME
  keys / (certificates / intermediate include certificates) with
  passwords.  E.g., to drive b...@exam.ple, set
  *smime-sign-cert-...@exam.ple* to the private key / certificate
  pair as usual, the password lookup will then be performed for
  b...@exam.ple.smime-cert-key, b...@exam.ple.smime-cert-cert and
  b...@exam.ple.smime-include-certs.
  Like this the password can be stored in an encrypted .netrc file
  when *netrc-lookup*#? and *netrc-pipe*#? are set, or it may
  be stored in an encrypted resource file that has been loaded via
  `source'#? as a simple *password*#? variable.

  Note that the prompting that happens as a last resort will still
  interfere with a possibly running $PAGER#? instance, dependent
  on the setting of *crt*#?, of course.  Proper job control
  handling and recognizing that we are running $PAGER when doing
  that prompt is a TODO for v15.  Sorry.

- Some commands, like `set'#?, `help'#?, `list'#?,
  `mlist'#? etc., now react upon the setting of *verbose*#?
  and(/or) *debug*#?.

- `write'#? uses iconv(3) as appropriate.

- *mbox-rfc4155*#? has first been dropped, and then
  reintroduced with different semantics.  Because, it can be
  helpful if a messed up MBOX is read: by setting it, reopening
  the MBOX, unsetting it again and then doing "copy * SOMEWHERE"
  we will ensure the new SOMEWHERE is a valid MBOX.

- `call_if'#? is new; kept it even after "ignerr call" came up.

- The new *smime-ca-flags*#? and *ssl-ca-flags*#? can be used
  to fine-tune X509_STORE_set_flags(3).  (In the following, the
  first `wysh' enables the ';' to be recognized as a shell token
  delimiter, the second allows shell-style expansion of the
  variable value.)

    ? wysh set ssl-ca-flags=partial-chain;\
      wysh set smime-ca-flags="${ssl-ca-flags}"

- Socket connections use TLS S(erver)N(ame)I(ndication) as
  appropriate (RFC 7817).

- A new `charsetalias'#? command.  (Pietro Cerutti, mutt#3925)

git(1) shortlog (abbreviated)
'''''''''''''''''''''''''''''

f01291d extract_date_from_from_(): dig more invalid MBOXes (Antonio Radici)..
69bf721 *pipe-TYPE/SUBTYPE*: add "@" triggers and $NAIL_FILENAME_TEMPORARY..
bb5d0e2 *pipe-TYPE/SUBTYPE*: add "!" trigger ("needsterminal")
df8768b Add *mime-counter-evidence* bit 4 (Aharon Robbins)..
d3fe980 Ftmp(): drop "mode" argument (not wrong: Mike Frysinger)..
f6fbcc4 Add *mime-alternative-favour-rich*..
86159db nail.1: we support searching, really (Predrag Punosevac)
5b61a08 nail.1: talk about address lists (again) (Michael Convey)..
0eeffc4 nail.1: try improve states / MBOX etc. relation (Michael Convey)
43ea039 nail.1: what is an environment variable (Michael Convey)
13e0804 nail.1: fix typo (Hariskar (archlinux Wiki))
03d6af5 nail.1: more on sortability (Rudolf Sykora)..
4da9043 Not "binary", but "boolean" variables! (Predrag Punosevac)..
7064ef2 Add *message-inject-{head,tail}*, obsolete *NAIL_{HEAD,TAIL}*
4fde608 Add *history-{file,size}*, obsolete *NAIL_HIST{FILE,SIZE}*
36578d1 Add PS_SETFILE_OPENED (affects hooks), *bsdcompat*<>*emptystart*..
600d449 Drop the `inc' alias of and for `newmail'
5296040 Decouple -H from -L: it used to be -eL instead!
dad4e94 Obsolete *SYSV3*
c85f56d Support :d specifier for at least `from' (Martin Neitzel)..
30d0bb7 `netrc': add "load" subcommand to only load, not also "show"
b12e1ed Be more friendly when composing mails (Martin Neitzel)..
b50eac0 nail.1: use display/show not type/print (Michael Convey)..
6feafaf Add `search' alias for `from' (Predrag Punosevac)
a4e2612 Support 256-colour terminals (Gavin Troy)
16b57ab Drop `mono'+, change `colour' and `uncolour' commands..
d535db0 Implement `dotmove': move the "dot" up or down by one
c1c1ee5 `source': support shell pipes (if filename ends with "|")
8655aff Error framework: print UAGENT prefix (ident in pipes; Salvatore
        Bonaccorso)
e96baaa Introduce $LOGNAME, the POSIX equivalent of $USER (Todd C. Miller)
0d0c523 Support |PIPE targets for `move', `copy' ++..
76e6364 Add `customhdr' (Sergey Matveev)..
ad58c91 Support *customhdr*, too (Sergey Matveev)..
6322e0a Support _any_ user header via ~e (Sergey Matveev)..
19b3afb Drop support for $ORGANIZATION in favour of `customhdr'
77d4f5c Fix SSL init order, change *ssl-rand-file* behaviour..
8daeda9 send.c:sendpart(): "support" malformed messages..
eddf684 Drop *print-all-chars*
f733f61 Don't set *dot* in -# batch mode
5d52578 Add -: command line option (Robert Elz)..
53b5f07 README: use git(1) --single-branch (Mantas Mikulėnas)
420131f Fix mispelling: can|to be send->sent (Respiranto (archlinux Wiki))
0dd85b1 n_iconv_open(): use *charset-unknown-8bit* also for "binary"..
3fd94e3 Default `localopts' to YES for `account' and *folder-hook*s!
983d22f `if'+: allow "if ${VARNAME}" in addition to "if $VARNAME"..
d6902e1 Add *on-compose-{enter,leave}* hooks (Jens Schleusener, Rudolf
        Sykora)..
abf2e5d .netrc: support comments (Walter Alejandro Iglesias, Ralph Corderoy)..
37e0c26 nail.1: .netrc comma separator was in original Berknet parser! (Ralph
        Corderoy)
7e85aa9 Drop WANT_EDITLINE support..
512069b Rewrite for a generic termcap(5) interface..
40522c3 nail.1: use -v option to cat(1) if available (Thomas Dickey)
cf3ccfe Deduce colours via *termcap* instead!; support all/*..
64eabef Turn NCL into M(ailx) L(ine) E(ditor)..
27f3e9d Add terminfo(5) support (via WANT_TERMCAP_PREFER_TERMINFO)..
  Note: later renamed to OPT_TERMCAP_VIA_TERMINFO
1aa64b6 Add WANT_KEY_BINDINGS..
d935e65 (BWDIC!) Allow `source' in `call'ed macros..
c8c1393 n_lex_input(): truly support line continuation via backslash..
7f52ae7 make.rc+: add WANT_NOMEMDBG to allow valgrind(1)+ with DEBUG/DEVEL
2497240 homedir: if not $HOME, use pw_dir (of $LOGNAME or getpwuid())
94b3635 (BWDIC!) make.rc: add defaults _here_ (as VAL_xy, e.g., VAL_SENDMAIL!)
f0ac705 (BWDIC!) Rewrite variable handling..
724751e nail.1: drop `(un)?setenv' and *bsdset*; add `environ'
f4577e6 FIX (fix?) `localopts'..
d8f7cd7 (BWDIC!) Redefine -u / $LOGNAME / $USER (Afan)..
e337e00 Support expansions in $MAIL!; more on `account's (Afan)..
d596d74 Compare *newfolders* case-insensitively (Justin Ellingwood)..
57744f9 Redefine *folder* / getfold->folder_query() / *HOME* (Justin
        Ellingwood)..
3c57c83 n_path_mkdir(): create recursively as necessary (Justin Ellingwood)
66553bc `list': with non-WS argument, don't sort alphabetically
b95e6be Introduce `wysh' command prefix to change argument parser..
08b8f48 Only support sh(1)-style quoting for some new commands..
67c2acb (BWDIC!) Only use new sh(1)-style quoting for attachments!
f4b0153 (BWDIC!) Only use new sh(1)-style quoting for `write'
a89e1e3 `remove': use sh(1)ell-style quoting
858374b Drop wordexp(3), instead unroll via fnmatch(3)..
0945726 MLE: change HT expansion..
0bbe981 nail.1: fix spelling errors as by igor(1) (Ingo Schwarze)
f1a775b Add -M and -m options (Viktor Szépe, Ralph Corderoy)..
42b42da `list': include argument-type etc. if *verbose*
79f2053 `if'+: support sh(1)-style comments on the line..
1bd8e48 Add *umask*, and set actively (Walter Alejandro Iglesias)..
6b1cd93 Now with *umask*, just drop fchmod(2)++ calls (Walter Alejandro
        Iglesias)
2b45cd0 Add *netrc-pipe*: allows e.g. encrypted .netrc files
af8261e Obsolete WANT_AGENT / *agent-shell-lookup* (Sorry!)
ba22166 Change make targets; add $MAILJOBS; don't track $DESTDIR (Gaetan
        Bisson)..
cd244b1 Add WANT_CROSS_BUILD make.rc option (Juan RP)..
95141f6 Tweak VERBOSE handling (William Yodlowsky)..
73545ad Rename ADD(C|LD)LAGS to EXTRA_(C|LD)FLAGS..
ca81646 make.rc, mk-conf.sh: allow y/n booleans
d74a18a mk-conf.sh:path_check(): skip any "fakeroot" path (Hilko Bengen)
7ce6a17 (BWDIC!) nail.rc: nodot, emptystart, fullnames, m-c-e=0xE; pimp PDF
        handler
44a3be6 sendout.c:__savemail(): try to file_lock() *record*
5ef5261 cmd2.c:save1(): try to file_lock() target of `save'/`move'/etc.
10990e4 Add n_O_NOFOLLOW, disallow symlinks for writable files (Matthew
        Dillon)..
c83e153 (BWDIC!) Require explicit "from_" to `retain' etc. From_ lines!
d7a15e4 page_or_print(): query $PAGER environment, use it
1dc9bb6 (BWDIC!) Make `top' real-life capable!  Add `Top', *topsqueeze*..
df4954c Add $SOURCE_DATE_EPOCH (reproducible-builds.org; Colin Watson)
b412ea8 mime.types: add x-lzma, x-lz4 and x-lzip MIME type extensions
dc92f2c savedeadletter()->sendout.c; tweak POSIX compliance (Ralph Corderoy)
8a3638c MLE: add `bind' and `unbind' etc...
4c93f66 (BWDIC!) Obsolete *sendmail*++ in favour of *mta*++; obsolete *smtp*..
284db64 Obsolete *spam-interface*=spamd..
61aac0f All: OPT_ not WANT_, VAL_XY not XY..
45d488d README: add The Mail Archive -- Gmane.org reduced to NNTP
48eb7da SEND_TODISP(_ALL)?: append newline if message does have no final one
63bf464 (BWDIC!) Drop readline(3) support..
863f1e8 tty.c,MLE: gracefully honour *line-editor-disable*++..
844bedb Support LEXINPUT, thus `bind', contexts..
b9e4e61 Drop `features', change `version', adjust make system..
20f3cd2 nail.1: more explicit `set' references instead of saying 'Set' (Donald
        Mugnai)..
== Preview 1 ==
1b462ed -#: also set *MAIL* to /dev/null
2d53b46 url_parse(): better take better care for path parts (Stephen Isard)..
8650fa6 sendmp(), setfile(): FIX: ensure time_current is actualized
21f0eaa mk-conf.sh: find terminfo on Sun (Thomas Dickey)..
e33dfa0 n_termcap_query(): FIX: did real work even with PS_TERMCAP_DISABLE..
58423ea MLE.bind.a_tty_bind_create(): properly align durable buffer, too (sic)
f449fe1 MLE.bind.a_tty_bind_create(): tweak previous (encapsulate+notify
        knowledge)
4496e9a Many: drop support for *mbox-rfc4155* - a no-brainer..
a26d4c2 is_head(): change compat argument to check_rfc4155..
5cf41d4 mime_types.c:_mt_by_filename(): basename() path (fix/tweak relative
        paths)
e4ddaa8 Change n_iconv*() protos, add enum n_iconv_flags (Ralph Corderoy)..
83313f1 Allow -X options to take multiline arguments..
204531f cmd_tab.h: allow history for `environ', `set', `varshow'
a1eee83 Add a RFC 6068 url_mailto_to_address() hack for List-Post:
99e96f3 FIX "," message specification (since [1c4b8c9], v14.8.4)..
1587069 FIX [44cec1f] (Fix "address" message specifications (John Dodson))..
e40e181 nail.1, nail.rc: set *sendwait* by default (Ralph Corderoy)
0879986 First (rather small) step in reworking getmsglist()..
3051546 Move `help' to lex_input.c, show argument type with *verbose*
0ef4291 `z': add ^: goes to first screen; fix max calc for 0 modulos
7adcf99 `write'++: !interactive: urlxenc() attachment paths (Ralph Corderoy)..
b14aae7 `write'++: !interactive:.. But now, really (Lyndon Nerenberg, David
        Levine)..
20082ee THANKS: David Levine and Lyndon Nerenberg
5270bf1 Simplify *folder* (implicit trail solidus) (Stephen Isard, Ralph
        Corderoy)
f1313c0 Add `urlcodec', obsolete `url{en,de}code'
a638bcf Add *typescript-mode*, set it for -# (Ralph Corderoy, Martin
        Neitzel)..
053e19f Add *inbox* (Stephen Isard, and Jürgen Daubert)..
9d364e1 mk-conf.sh, auxlily.c: fix va_copy(3) detection with -std=c89
20e3240 Add OPT_ALWAYS_UNICODE_LOCALE (Predrag Punosevac)..
14b5a3a Make combinetime() overflow safe (Vincent Lefevre)..
2bf0888 getmsglist(): if user gives A-B, try fulfill even in threaded mode
0bd7cbb Dotlock: O_TRUNC is meaningless with O_CREAT|O_EXCL; etc.
== Preview 2 ==
3fa035ac mk-conf.sh: fix bmake(1)/portable, it fails to import
        $CFLAGS/$LDFLAGS
7a657d9c cc-test.sh: add S/MIME disproofs via smime(1) (Sven Neuhaus)..
a445996e THANKS: Sven Neuhaus
de8f750b n_termcap_suspend(): oops, fix capability reverse ke<>te, te<>ke
9e08fe35 README: go away from Gitlab; hello, unagitated repo.or.cz!
ae86c884 cmd1.c:__hprf(): compensate for add. bytes of UTF-8 seq.(s) (Martin
        Neitzel)
38426102 extract_header(): FIX: multiple In-Reply-To: names are allowed!
0472b0d6 More or less completely rewrite memory.c..
096e6021 Allow Base64 and QP en- and decoding to fail
d91a4bd0 More or less completely rewrite mime_enc.c..
d33285fa `bind': new "default" context and changed "base" semantics..
abf00559 (BWDIC!) Rewrite prompt handling via new n_tty_create_prompt()..
38fd5de7 (BWDIC!) *encoding*: change default to base64, provide
        documentation..
83115c3b Allow - as an output filename..
675d825b nail.rc, nail.1: set *editheaders* by default, and pimp "A starter"
44ff5125 TLS/SSL: make OPENSSL_API_COMPAT=0x10100000 clean..
411e9f7a Allow `errors' in send mode, too
03309960 The time has come: $POSIXLY_CORRECT, *posix* have arrived
975e6869 (BWDIC!) Only rm sysboxes, unless *posix* (Walter A. Iglesias,
        trondd)..
a3a1d38e Add `headerpick'; Localize stuff, and rename ignoretab.c ->
        ignore.c..
81e33751 Throw away file_expand() (Ismael Bouya)..
f1fdc933 THANKS: Ismael Bouya
3779baad Obsolete -E and -B (-> STDOUT always LBF, STDIN with -#)
0352f2f6 -s, ~s: normalize NL/CR characters (Debian #419840)
791c5e97 Give error if compose failed (later better; Debian #37104)
5026ea36 MLE: take advantage of new "default" `bind' context
7745ea13 cmd_tab.h: allow `source', `source_if' and `shell' during composing?!
c7d42236 Add *on-compose-done-shell* hook
e4499f98 Add ~^ plumbing command escape
d8737937 Add a `read' command (like read(1), but yet a bit basic)
f8e9cc30 Drop `customhdr' again (keep *customhdr*): `~^' is better!
0824682c collect(): fix twice dump of -q file (since [d6902e1], 2016-05-03)
5ae556f8 Add *r-option-implicit* (Felipe Gasper, Martin Neitzel)..
534fd725 THANKS: Felipe Gasper
9fc22b15 Final step to support Base64 with multibyte charsets..
a8897b02 Add an *on-compose-done* macro (running in a subprocess)
645e44ec BWDIC! Add `echoerr'; FIX *bang* (bwdic!); and some cmd*.c ordering
629035e1 Dump to a "-" file recipient even with *debug* enabled!
33709163 nail.1: some more words for *inbox*, and such sort (Stephen Isard)
88c19049 mk-release.inc: place OpenPGP signatures last (learned from Paul
        Eggert)
ebf2a584 THANKS: Paul Eggert
3d7835fc (BWDIC!) Extend semantics of -a and `~@' (bwdic!); attachments for
        `~^'..
2b33a8cb Add new "failinvaddr" keyword for *expandaddr*
0ede309c Rudely fix the RFC 5322 dot-atom, the "Dr. Problem" (Dr. Werner Fink)
261f205b THANKS: Dr. Werner Fink
e441efb4 Integrate S/MIME passwords into usual credential lookups (a bit)..
1ad6817d nail.1: disable "The Mailcap files" for v14.9.0; sigh and sorry
== Preview 3 ==
303d46cd FIX [3d7835fc] aka `~^' attachments, especially Content-ID:
        (Ralph Corderoy)
f797c27e FIX privsep.c, yes, vulnerability (wapiflapi)..
847a21b5 THANKS: wapiflapi
f2699449 FIX privsep.c vulnerability, II (forgot hostname!) (wapiflapi)
303d46cd FIX [3d7835fc] aka `~^' attachments, especially Content-ID: (Ralph
        Corderoy)
4ce4eb55 privsep.c: and just verify the box is also in CWD (wapiflapi)
88253be0 send.c:sendpart(): iconv(3) when `write'ing to a file!
1b1d7184 *on-compose-leave*: allow *autob?cc* from within
5319762a README: adjusted repository layout
374ccb98 Implement some command modifiers, allow recursive `ghost' expansion..
ef903a66 Sigh.  So, reintroduce *mbox-rfc4155*, but slightly different!
0dc7ad9b Disallow turning off `localopts' in compose-mode hooks..
25d9e6e2 Generate Content-ID: as applic. (Ralph Corderoy, Ken Hornstein, David
        Levine)
17706f28 THANKS: Ken Hornstein
76583f83 (Heavily) Tweak [8daeda90], "really support" malformed messages..
b8bcff9d Implement `call_if'
e6895402 main.c:_setup_vars(): verify $HOME and $TMPDIR
084d7e9e (BWDIC!) NAIL_ -> MAILX_, or even drop!..
24fe9387 `show': no more colours, they counteract its purpose!?!
b034478f INSTALL,makefile: $MAKEJOBS, not $MAILJOBS
8af80164 `call': parameters via *[*@#]*, *[1-9][0-9]**; add *?*, drop
        *-exit-status*
4c7be869 `file'+: reallow globbing for arguments, fnmatch(3) is save!
8389819e Add *-alternates*, check `alternates' arguments
  Note: later renamed to *alternates*
c6e0b04e Implement `shift', to shift macro parameters
6c39d928 Security fix: never fall back to getenv(3)..
65bb8d98 Implement `return', to return from macros and accounts
4eadbd76 Support getrandom(2); revert stupid [5d345bd0]: OpenBSD has
        arc4random(3)!
c11ef2cb The lunatic is on Solaris..
b274e20a Improve *expandaddr*=failinvaddr even interactive, e.g., with ~e..
b421c15b (BWDIC!) Drop usage of strtou?l() in favour of our own n_idec_*()..
682a7595 (BWDIC!) Add n_source_inject_input(), get rid of some hacks..
57e84415 Implement `vput' modifier: store result in variable..
197bea7c Implement `addrcodec'
437da9fd (BWDIC!) New `urlcodec' semantics
cd0cfc16 Implement `vexpr', something analogues to expr(1)
3e40e899 `call', `~': do not require `wysh' for new quoting rules
ce8c357c Implement `eval'
0ff45bde Fix *[*@#]*/*[1-9][0-9]** access corner cases; allow over-`define's..
acc9b2f3 *reply-strings* was falsely documented as *reply_strings*..
70e9de08 `history': support relative to top access (negative numbers)
c8f6c18d `ghost': avoid self-recursion
6409c886 nail.1: clarify/FIX doc. of \cX (Noel Chiappa, Random832)..
90bdf7e4 THANKS: Noel Chiappa
e0bf944d THANKS: Random832
5a1c023c nail.1: furtherly clarify doc. of \cX (Doug McIlroy)..
fb88d4fb THANKS: Doug McIlroy
a396678a Implement `echon' and `echoerrn' ("echo -n" and "echo >&2 -n")
7e4ff2d0 FIX: actually honour ARG_H (never place in history; SINCE EVER!)
c5197719 cmd_tab.h: `wysh' for more commands!
d33294c2 mk-release.inc: use %B for $DATE_MAN (Baptiste Daroussin)..
ad34b768 THANKS: Baptiste Daroussin
f53248dd Support `vput' for `cwd'
eafa9411 (BWDIC!) Defaults for *datefield{-markout-older}* (Debian #855582;
        r.ductor)..
871a1e3f THANKS: Riccardo Ductor
a743a900 Avoid crash due to a strictly standard compliant memcpy(3)..
a256ebb2 (BWDIC!) sendout.c:__mta_start(): with SMTP *mta*, do not send to
        aliases!
52004130 Add n_lex_input_clearerr(); limit *ignoreeof* count to 4..
5ab93627 MLE: set FEXP_NOPROTO for mle-complete expansions (Ralph Corderoy)
78c30e08 `read': work more like shells..
ada72661 ~<: add "- [HERE-delimiter]" for pasting etc. (Ralph Corderoy)
5669e8a2 `vexpr': add "random" subcommand
5524e1be `vput': generalize and use shell-parser (i.e., itself expandable)
acb887b4 (BWDIC!) *mta-arguments*: parse via shell-style quoting
9cddf95c (BWDIC!) For all shell commands, use shell-style quoting
72faa445 New quoting rules for `unset', `varshow', `varedit'
ceaac3b7 `vexpr': add "hash" subcommand
96888b9a Add *{smime,ssl}-ca-flags*..
3bfd2182 Use TLS S(erver)N(ame)I(ndication) as appropriate (RFC 7817)
d4d46c42 Add `charsetalias', and use it (Pietro Cerutti, mutt#3925)
c9051911 THANKS: Pietro Cerutti
72b43d61 README: Add "Security record" section
f83564ea c_[Ss]croll(): use new shell-style argument quoting
63a167f8 `source', `source_if': use new shell-style argument quoting
5ce2b406 (BWDIC!) FIX false decision: for `if' etc., add -le,-gt.. operators..
f3404bc1 (BWDIC!) Redefine all CODECS, add `shcodec', change `addrcodec'..
215c5cc2 Our own layer onto errno, yet too high
911bf9d1 Add *^* multiplexer; yet $^ERR{,DOC,NAME}{,-xy}..
65e2b75f Redefine VIP handling of variables (Ralph Corderoy)..
8235d440 Implement `xcall' stack-avoidance optimization
5e75768e Finally add `sleep' (to be able to test ^C more easily)
6c8b5c77 `headerpick': no more multiplexer, add `unheaderpick'
1c342dd5 C****Y BSD signal handling!  Try improve ^C stability..
90529c5f Add `(un)?commandalias', obsolete `(un)?ghost'
5fd6da65 (BWDIC!) No!  Let $! be errno, and $? the sole exit status..
f7f2781b `addrcodec': add `skin' subcommand, add an `encode' mode
59cb4714 Add *log-prefix* (with i3val), for reproduceabilities sake
658567b5 (BWDIC!) make.rc,mk-conf.sh: VAL_NAIL -> VAL_MAILX
== Preview 4 ==

Appendix
^^^^^^^^

The complete changelog of commits in between two versions OLD and
NEW can be inspected by using the git(1) `log' command:

  $ git log --reverse --topo-order --abbrev-commit OLD..NEW
  # Only topic branch headers (--no-merges for content commits only):
  $ git log --oneline --reverse --topo-order --merges OLD..NEW
  # Same, but truly accessible:
  $ git log --oneline --reverse --topo-order --merges --parents OLD..NEW |
    while read c1 c2 c3 c4 c5 c6; do
      printf "%-24s: \$ git log --oneline --no-merges %s ^%s\n" \
        "${c6}" "${c1}" "${c2}";
    done

Even elder announcements:
  v14.8.0 - v14.8.6: 00292
    v14.8.7 - v14.8.8: 00374, v14.8.9: 00435, v14.8.10: 00445
    [v14.8.11: 00495], v14.8.12: 00502, [v14.8.13: 00514],
    v14.8.14: 00519, v14.8.15: 00547, v14.8.16: 00551
  v14.7: 00094
    v14.7.1: 00129, v14.7.2 - v14.7.8: 00193, v14.7.9 - v14.7.10: 00216,
    v14.7.11: 00240
Replace the XXX in the following URL with the shown number:
  \https://www.mail-archive.com/s-nail-users@lists.sourceforge.net/msgXXX.html

--steffen
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
__________________________________
S-nail-users@lists.sourceforge.net

Reply via email to