S-nail announcement

S-nail v14.10.0-alpha (“Mountains O' Things”)

Hello list,

hereby i announce S-nail v14.10.0-alpha, an ALPHA release of
v14.10.0 "Mountains O' Things".

(The version of the alpha release is broken, it says v-dirty.0.0.)

Credits, in order of commit appearance:
Maxim Tarasov, Geoff Clare, Gavin Troy, Olaf Hering,
Stuart Henderson, Olav Mørkrid, John Levine, Z, Vincent Lefevre,
Oskari Pirhonen, Robert Elz, Florian Weimer, Adhemerval Zanella,
Damien Miller, Madou Mad, Giannis-2, Qualys (Security Advisory
team), Ross Burton, Mingli Yu, Hans Bezemer, Ashton Fagg,
Steve Blinkhorn, Arne Wörner, Harald van Dijk, Stephen Isard,
Jens Schleusener, John Holder, Χάρης Καραχριστιανίδης (Hariskar),
Denys Vlasenko, Dr. Werner Fink, Predrag Punosevac,
Sergey Matveev, Solar Designer, Kevin Bloom, Arkadiusz Miśkiewicz,
Thorsten Glaser, Claus Assmann, Robin Humble, Chet Ramey,
Tomáš Korbař, Viktor Dukhovni, Martin Uecker, Dag-Erling Smørgrav,
Kyle Evans, rahl, Mia Soweli, and Ryan Matthews.

We welcome Maxim Tarasov, Olaf Hering, John Levine, Z,
Oskari Pirhonen, Florian Weimer, Adhemerval Zanella, Damien Miller,
Giannis-2, Qualys (Security Advisory team), Ross Burton, Mingli Yu,
Hans Bezemer, Ashton Fagg, Steve Blinkhorn, Arne Wörner,
Denys Vlasenko, Kevin Bloom, Arkadiusz Miśkiewicz, Thorsten Glaser,
Robin Humble, Tomáš Korbař, Viktor Dukhovni, Martin Uecker,
Dag-Erling Smørgrav, rahl, Mia Soweli, and Ryan Matthews in THANKS.

We are  https://scan.coverity.com/projects/s-nail (project 444).

Number games
^^^^^^^^^^^^

The tarball is available as

	https://ftp.sdaoden.eu/s-nail-v14.10.0-alpha.tar.xz

The web page will have manuals in a few minutes at

	https?://www.sdaoden.eu/code.html#s-mailx

  mdocmx(7) anchors are denoted by a number-sign #:
  pointing a browser to the "#ANCHOR" of the online manual works.

PACKAGER NOTES (make.rc)
^^^^^^^^^^^^^^^^^^^^^^^^

- New OPT_NET_TEST, builds a test helper for network protocol
  functionality, default enabled (with OPT_NET=y).

- Whoever uses OPT_AUTOCC (default) may now use VAL_AUTOCC to
  fine-tune settings.  The "option_care" flag may be of special
  interest, the default though is
    VAL_AUTOCC=bind_now,pie,stackprot,fortify,cfprot
  (Stuart Henderson)

- OPT_DOCSTRINGS and OPT_UISTRINGS were removed.

- OPT_OAUTH_HELPER, external OAuth Python3 helper program, default
  enabled (with OPT_NET=y)

- OPT_BUILD_TESTS umbrella option that covers all possible
  programs which are build solely as helper for the test.

- VAL_BUILD_INFO may be set by packagers who do not want to
  include build information in the binary.  (Mingli Yu)
==alpha

NOTES, ChangeLog
^^^^^^^^^^^^^^^^

+ In general: if it did not work in the past, try it now.
  (There are way too many bugfixes to be noted.)

+ v15-compat=y is now default!  (Setting will disappear in v15.)

+ Command line interface moved towards sh(1)ell-style quite a bit.

  This includes that `if' .. series now practically works
  identical to bash(1)s [[ ]] construct, such things now succeed:
    uns i; if -z $i; ec ya; end

+ Several settings gained built-in initial values.  Like this non-
  expert users should get away out-of-the-box more easily.
  (Arkadiusz Miśkiewicz, Kevin Bloom)
  Note: includes *mime-force-sendout* (Arkadiusz Miśkiewicz)

  ! Remarks: power users may not like certain of these, for example,
  ! that *emptystart* is now set by default.  So far there is no
  ! simple toggle to turn these extensions all off, like the new
  ! *expert* that Norman Ramsey asked for.
  ! I wonder whether that should change with the final v14.10.0
  ! release.  For at least -alpha however they have to be
  ! disabled/changed explicitly, in resource files, for example.

  (The entire set of initial settings is shown by eg
    s-nail -:/ -Xse -Xx
  The entire set of known variables plus initial settings:
    s-nail -:/ [-v] -Xvars -Xx)

+ `xcall', the "manual tail call optimization", no longer leaks
  memory (and much more fixes).  Oh no, we can implement yes(1)!
    s-nail -:/ -X'define yes {
      ec yes
      xcall yes
    }
    call yes'

+ SMTP configuration changed completely via new *smtp-config*,
  including support of SMTP extensions like PIPELINING and more.
  (It is likely "it just works" for you out of the box.  Any hint
  if not would be appreciated!)

  ! POP3 and IMAP are not yet converted to the new syntax in -alpha.

+ The old Heirloom-style approach of credentials was removed.
  It was obsoleted since before 2015.

+ SMTP, POP3 and IMAP gained support for OAUTHBEARER
  authentication mechanisms.
  (IMAP also PLAIN.  (Stephen Isard))

  There is an optional *build-oauth-helper* Python3 script
  that can be used by the macros shown in the new XY-config(7)
  manual, which gives copy+paste examples, to manage OAuth
  credentials.

  ! With -alpha, credentials must be kept in a "hot" and valid
  ! state; the release hopefully will call out for credentials
  ! when they are *really* needed.

+ MIME classification learned about chains like .tar.gz.
  New ?o [only-handler] `mimetype' marker, a good thing.
  Both: (Olaf Hering)
  Also new ?s [send-text] marker.

    Because MIME media type handlers, like those defined in "The
    Mailcap files", match media types, non-standardized fictional
    types like "x-tar-gz" are used in the wild as MIME environments
    become configured.

    That is, IANA MIME registry standards do not know about "extension
    chains": "tar.gz" is thus a gzip(1) compressed file, and the sane
    solution of recursively unpacking until no more MIME media type
    unpacking is possible is not available.

    Therefore introduce this type-marker, which says that the given
    MIME media type shall only be matched when looking for handlers,
    but not when classifying content to create messages.

  Some are built-in by default, see
    $ s-nail -:/ -Xmimet -Xx | grep only-hand

+ File related functions of `vexpr' moved to new `fop'.
  Many `csop', `fop' and `vexpr' functions added or extended.

+ New $(( )) shell-style arithmetic evaluator.
  ! Known -alpha bug for tremendously deep ?: style conditionals:
  !  ok: $((0?2:(3,0)?(4,5):(5,0)?(7,8):(9,10)))
  !  ok: $((1?10?20?22*1?23**1:24**1:25/1?0:56>>1:-1:-2))
  ! bad: $((0,1,2,0?(3,4):(((5,0)))?0?0?0?6:7:8:9:10?11?(12?(13?(0?+14:-14):0:0):0):0?15:0?16:17?18:0))

+ We gained multiple "local" scopes for commands, please read
  "Command modifiers".

  Also `vput' is obsolete, there is a ">" command "redirection"
  modifier instead

+ We gained "result set"; alongside this `vexpr' regular
  expression matching goes that route, with temporary backward
  compatibility.

   ^?, ^*, ^@, ^#, ^0, ^1, ..
     Result set access, in the local#-most scope#: ex-
     tended return# values of the last Macro# call#ed (if
     ^? is true), regular expression match groups as cre-
     ated for example by if# and vexpr#, as well as other
     dedicated (documented) result sets, for example of
     fop# glob, the circumflex mode of digmsg# and ~^#, or
     read# and readsh#.  ^# holds the number of accessible
     values (^1 etc).  For return values ^0 stores the
     macro name, for regular expressions the entire match,
     per-command documentation applies otherwise.  ^* and
     ^@ behave like *# and @#.

           define x {
             if abrakadabra =~ (.+)ka.*(b.+)a
               echo "$^#: <$^0> <$^1> <$^2>"
               return ^ says $^2
             end
           }
           call x; echo "$^?, $^#, $^0 $^1 $^2"
           #-> 3: <abrakadabra> <abra> <br>
           #-> 1, 3, x says br

+ New *on-mailbox-event* hook will replace folder hooks,
  reporting more conditions.

+ New *on-compose-embed* hook!
  This replaces the obsolete *on-compose-splice* series, which ran
  in subprocesses, was hard to use and could end with process
  deadlocks if used falsely.

   Macro# hook that is invoked once the Compose mode# user inter-
   action has ended (but see asksend#).  It runs in COMMAND
   ESCAPES# mode and can act like an interactive user.  The
   s-nail-config(7)* manual provides examples.

+ New *ttycharset-detect* variable.
  Alongside this, rewrite of the entire MIME probing machinery!
  And support *iconv-disable*.
  (Dr. Werner Fink)

  We can now create email content as crude as, for example (result
  of test t_ttycharset_detect(), var-2).  (I love that!  We were
  *so* bad before!)

    Subject: =?iso-8859-1?B?ZPw=?=
    Content-Type: text/plain; charset="utf-8"
    Content-Disposition: attachment; filename="l2.txt"
    Content-Type: text/plain; charset="iso-8859-1"
    Content-Disposition: attachment; filename*=utf-8''%E2%98%BA.txt
    Content-Type: text/plain; charset="utf-8"
    Content-Disposition: attachment; filename*=iso-8859-1''d%F6.txt
    Content-Type: text/plain; charset="iso-8859-1"
    Content-Disposition: attachment; filename*=iso-8859-1''d%FC.txt
    Content-Type: text/plain; charset="utf-8"
    Content-Disposition: attachment; filename*=iso-8859-1''d%FC.txt
    Content-Type: text/plain; charset="utf-8"

+ Date: header fields in -t'emplate mode are used.
  This fixes us being used for git-send-email.  (rahl)
==alpha

ChangeLog
^^^^^^^^^

- *smtp-from* replaces *smtp-hostname*, and is a variable chain.
  (Madou Mad, [Giannis-2], [Stephen Isard])

- Password "logged" only for -d/3x -v  (Gavin Troy)

- New *line-editor-config*.

- If *termcap-ca-mode* is given a value, alternative screen is
  cleared when left.  (Vincent Lefevre, Oskari Pirhonen)

- New `:' no-effect command (like sh(1)ell one).

- *tls-config-pairs* (fallback) knows about KTLS.

- -M and -m command line option hacks were removed.

- `~r', `~R' and `~<' command escapes saw fixes / changes.

- New *message-id* configuration format string.

- The Subject: [tag] resorting done by (certain, newer?) Mailman
  configurations is now properly dealt with.

- The MLE ("Terminal control and line editor") supports
  "bracketed paste mode":
   [Option] mle-be-bd-ps: if "bracketed-paste" is supported by the
   TERM#inal (see termcap#), enabled regardless of
   line-editor-no-defaults# to prevent undesired interpretation of
   pasted (clipboard) content.  An implementation detail though
   documented and shown by bind#.

- Because iconv(3) is a closed black box which does not reveal
  anything, we now include a complete character set name database
  in order to reflect, and choose MIME preferred real names.

- *on-program-exit* defined more.  (Robert Elz)

- New *obsoletion* variable to allow configuration of
  which obsoletion messages appear (to some extend).

- *smime-cipher* defaults to AES256.

- In certain contexts *cols* replaces $COLUMNS.

- No more *piperaw*: `Pipe' is always, `pipe' never.
  `Show' is gone, `show' remains.

- From_ quoting in the first body line was broken for eleven years.

- "Compose mode" `history' entries are better normalized.

- New mle-prompt2 and -promptx slots for "Coloured display"
  aka `colour'.

- According to RFC 5321, 2.3.5, the plain <postmaster> address is
  supported, case-insensitively (with an empty *hostname*).
==alpha

git(1) shortlog (edited)
^^^^^^^^^^^^^^^^^^^^^^^^

Steffen Nurpmeso (785):
bb02d5386e Make *v15-compat*=yes a default!
45d7ac28b3 a_crese_reedit(): no prompt for empty subject, use Re: (Maxim
        Tarasov)
b278ac5ee0 THANKS: Maxim Tarasov
d52a2f5830 *reply-to-swap-in*: upon after swap, this is US (Geoff Clare)
a5f7c353de *smtp-hostname*: convert to variable chain
b245481fef `varshow': without arguments, list all variables
3c54958980 [(BWDIC!) -*batch-exit-on-error*] Some detaching (..and so much
        left)
a3c8b6cbb3 (BWDIC!) Extend/Tweak/FIX: local/localopts/environ & varshow;
        scope->global..
267f2274d0 a_go_evaluate(): allow \ modifier everywhere
6f7be8ce28 Turn `eval' into a command modifier
31491a5dc4 `xcall': massive optimization and truly correct implementation..
af755d2676 (BWDIC!) Obsolete `localopts', more `local' (`mail', `reply' et
        al)..
f9e96b7bd9 Add OPT_NET_TEST, by default enabled, and src/net-test stub
cd1c089f8b net-smtp.c: support RFC 2920 PIPELINING
7ef348c297 SMTP: add *smtp-config* and automatic EXTENSION (EHLO, RFC 1869)
        support..
ee0d1c25d3 SMTP: use immediate response also for PLAIN auth
9356a41a50 (BWDIC!) Extend authentication stuff, support automatic such..
a1f5dbe289 mx_cred_auth_lookup(): log password only with -d/3x -v (Gavin Troy)
851cab2978 No! Drop support for old credentials! Now!..
e04fab9492 Fix EXTERNAL/EXTERNANON shadowing..
34b67b41b1 SMTP: actually implement OAUTHBEARER, too..
9c4b4e467c Fix handling of "auth" / automatic protocols
bca33281c5 IMAP: use CAPABILITY of response codes, if available..
bad9215f69 IMAP: actually implement OAUTHBEARER, too
83a854c21d Create mx_oauthbearer_create_icr(), use it for IMAP + SMTP
77397a7b90 POP3: actually implement OAUTHBEARER, too
fcf69e7f71 MIME classification: support EXT chains (.tar.gz..) (Olaf Hering)..
4434e5cc2d THANKS: Olaf Hering
29f4518c30 Add ?* mimetype type-marker, work around standard restriction (Olaf
        Hering)..
cbceb81aa6 MLE: add *line-editor-config*, support "any" and "case" matches
7a75f205b1 MLE: *line-editor-config*: optionally support srch-regex
8cebbdc4c6 MLE: *line-editor-config*: add srch-pos0 keyword
3845a72b39 Build: add VAL_AUTOCC to config it a bit (Stuart Henderson)
4d0247338a Ignore some header fields (again) (Olav Mørkrid)
308949c7aa `digmsg', `~^': FIX: MIME decode "header show" (ouch)
dbef07f67c (Only) Via -R and -f, allow ((eml|mbox)://)?- to denote stdin
        (pipe)
1f562421fb `readctl': support "lock" and "flock" subcommands
c469bbee6b `digmsg', `~^': add "epoch" subcommand ("Date: as RFC time")
ec6bb490be More EML, MBOX and Maildir corner cases
cc29381d45 Add new `fop' command, move file operations from `vexpr'
e01bf9e9f3 `vexpr': "date-utc", "epoch": allow optargs, convert on-the-fly
0c473016a3 `headerpick': add create/remove/assign/join subcommands
24b268e4bc `digmsg', `~^': add "header headerpick" subcommand
a7c8cede67 Add support for RFC 9057's Author: header field
701a51bd9f SMTP: add RFC 6152 support (8BITMIME) (John Levine)
21370097c3 THANKS: John Levine
985f8b2de6 Add *mailbox-basename* (Z)
228617f9e0 THANKS: Z
1495c462b1 Give *termcap-ca-mode* a value (Vincent Lefevre, Oskari Pirhonen)
e7ee331d35 THANKS: Oskari Pirhonen
c8a185bfc4 Add mx_child_ctx_set_args_for_sh() (Geoff Clare, Ciprian Dorin
        Craciun)..
1c9c4c4e32 THANKS: Ciprian Dorin Craciun
32fbc0ad2d Make clear $SHELL needs to be POSIX compatible (Robert Elz)
5e5a84fc37 su_time_nsleep(): clock_nanosleep(2) !errno (Florian
        Weimer,Adhemerval Zanella)
2ba93882f8 THANKS: Florian Weimer
622cf5d016 THANKS: Adhemerval Zanella
e221756886 random: randomize reseed_after (Damien Miller)
47e008c6b9 THANKS: Damien Miller
53646a5c09 Add *smtp-from*, obsolete *smtp-hostname* (Madou Mad,
        [Giannis-2])..
a2a97f18f7 THANKS: Giannis-2
64baa630a9 "Terminate" cmp_n()/cmp_case_n() where NOT YET (Qualys)..
ff426cf15c THANKS: Qualys Security Advisory team
d38b2ac110 Remove even more bogus quotation marks (Ross Burton)..
9c6e0d280c THANKS: Ross Burton
148642149e Braino: receiver->recipient; includes *mta-no-recipient-arguments*!
dab8affa67 mx-test.sh: work around FreeBSD /bin/sh #264319, #220587
da4533f264 mk/make-config.sh: outsource cc_check_testprog() to cover
        OPT_AUTOCC=no (Mingli Yu)..
17bb0d7d94 `vexpr': support bases 37-64
9bb1e7acb6 `vexpr': date-utc: offer $dutc_month_abbrev (Hans Bezemer)
629c7a6cc9 THANKS: Hans Bezemer
39a533006c nail.1: polish, I (Ashton Fagg)
e9509f2a0d THANKS: Ashton Fagg
6659c046e3 `mtaaliases': add resolve option (Steve Blinkhorn)
0b6534b0c8 THANKS: Steve Blinkhorn
5ed7ae7e49 make.rc, mk/make-config.sh: add VAL_BUILD_INFO= (Mingli Yu)
fc27f94ed9 shexp: add $(( )) arithmetic expression evaluator
19c5549105 Add `:' no-effect that rather mirrors sh(1) `:'
c84e2fb3ae mx_sendout_header_date(): support sub-minute precision (Arne
        Wörner)..
ddd75f4f38 THANKS: Arne Wörner
04a50e3a53 shexp: $(()): fix bugs (Harald van Dijk)
77cf091224 nail.1: talk on `account' evaluation order (Stephen Isard)
ce9a586f36 su/code.h: fix misspelling: DOYGEN->DOXYGEN (Jens Schleusener)
8e126e3a66 Many: fix spelling error threshold (Jens Schleusener)
096e951061 *message-inject-tail*: never dup to stdout (Stephen Isard)
917f4e66a0 nail.1: *on-compose-splice*: "read version" works no more (Stephen
        Isard)
c0aabb346c nail.1: pimp *on-compose-splice* docu (Stephen Isard)
bc61b21d41 `fop': l?stat: add st_[acm]time (Stephen Isard)
bf8606c835 Add `setdot' (Stephen Isard)
3189e21d7d `read', `readall': support local modifier
f8aadb3605 Allow `vpospar' and $#/$@/$0.. access in (and during) hook(s)
        (execution)
4709e418d0 `vpospar': add "evalset" subcommand
020b421b98 mx_socket_write1(): do not even try if socket is death (Stephen
        Isard)
e7e70e68e3 Attachments: support ! base64 modifier in file=!cs#!cs (John
        Holder)
8241106d3c mx-test.sh: t_attachments(): adapt to "do encode CRLF (John
        Holder).."
12652b3dfe Enable "global" command modifier
2549d64b9f `vpospar': support "global" modifier; raise limit to S32_MAX
f55b2591b5 `if', `elif': =~, \!~: offer match group access via $^#, $^0, $^1
        etc
1defba9a08 `vexpr': regex: switch to use regular $^0 match groups
1d8ba20cdb shexp: \c\ and \c\\ have to be treated alike (POSIX wants \c\\)
e4b22d5ead Try fix/rewrite conditionals, II..
8cd9ba4745 Do not recursively abort() endlessly if TMPDIR is invalid
fc3029fd93 Drop OPT_DOCSTRINGS and OPT_UISTRINGS
9ebf0b40eb Small simplification of "Try fix/rewrite conditionals, II.." (now
        possible)
09e2a0d232 iconv: finally work around GNU libc iconv(3) (//TRANSLIT) bug
133f816826 `fop': fix brainos; check ftruncate(3) error!; truly #ifdef FLOCK!
8f6d9464dc Drop *append*, default built-in set *hold*, *keep* and *keepsave*..
38b55588cc *tls-config-pairs*: *tls-features*: +option-ktls; support KTLS..
9148d4167f nail.1: prevent mime trouble in example (Χάρης Καραχριστιανίδης)
14dbf7751f mx-test.sh: t_mailcap(): t15 (Χάρης Καραχριστιανίδης)
7b123fa779 Conditionals: for $SHELL compat support = to mean ==, too
125e82026b Work over a_shexp_tilde(), add a_amv_var_check_xdir() (Robert
        Elz)..
3d58abd7e8 If -A is used, immediately flag *account*
03be6b9be5 n_var_setup_batch_mode(): do not freeze $MAIL, $MBOX, *inbox*!..
5b31d98484 (BWDIC!) Change again *on-mailbox-event*..
71de5634d9 *reply-to*: make VIP, check+convert (Dr. Werner Fink)..
010b6d8337 icodec: number_sign_rescan corner cases + tests (Denys Vlasenko)
f85abd23fd THANKS: Denys Vlasenko
fffe770bb7 Add *mailbox-read-only*
a37309922d Add mx_shell_cmd(); add *bang* tests, and *bang-data*..
b52c7904a5 Remove *add-file-recipients*..
f0aa9d1e06 Make -H and -L mutual exclusive..
b0e66596e9 *history-gabby*: add "fuzz" keyword; change
        *on-history-addition*;..
6b33e91a19 Remove *keep-content-length*..
3f73664883 (BWDIC!) n_namelist_vaporise_head(): no more *metoo*, ..that was an
        error..
71d7917505 (BWDIC!) `alias' (`alternates'): be sane; add `alias -[-+]' modes..
b5587f48c8 (BWDIC!) POSIX 2023+ includes `alternates' in `alias'es!..
c7735ce66c Scope work (adds `our', three scope mode..; fix environ link unroll
        bug)..
3e601142f3 shexp: $(()): optimize POWER via Chandah-sûtra (Denys Vlasenko)
2b4895747e `vexpr': add "seconds" command
81528984c1 Add *charset-locale* (always CODESET, not user settable)..
369eb4e95c Add *ttycharset-detect* (Dr. Werner Fink)..
cac2442f8c Implement *iconv-disable* (Dr. Werner Fink)..
e94cccb758 nail.1: polish, II (Ashton Fagg)
83e09e0ccc Imply *metoo* for Bcc: entries (after compose mode)
4ee138bb1b `return': allow any number of extended return values
3bef13b4c8 MLE: first token-expand modifiers, cmds and cmdaliases (Predrag
        Punosevac)
a971808b68 Support $^* and $^@ (and "$^@" in particular)
d5578368ed `fop': add `glob' subcommand (Sergey Matveev)
a55c59fe9b `shift': negative count removes at back
7c55bb9c1c `digmsg': allow direct usage of compose mode -
4a082d5273 (BWDIC!) `digmsg', `~^': add ^ mode to use $^# for storage..
c421bc11c1 (BWDIC!) Remove -M and -m command line option HACKS!..
6ad84e1b66 [BWDIC] Add *on-compose-embed*; obsolete *splice* hack..
8988da5687 `exit', `quit': do NOT delay exit until compose mode is left!
9a1cf48c7d ~r,~R,~<: with HERE delimiter: leading - ignores tabulators..
1c7b67d012 ~r,~R,~<: with unquoted HERE delimiter: implement shell expansion..
41fc726337 I.-active compose mode, -[~#], *on-compose-embed*: support newline
        escaping..
260acda425 `shift': support match groups via ^
dfb26e10f1 `read', `readsh': be more correct; both: add result set mode
154ad961be `vpospar' evalset: do not perform expansions
552913e582 Introduce >VARNAME modifier, obsolete vput B-)
2187cf6eff a_xtls_check_host(): RFC 9525 forbids commonName, allows only
        subjectAltName
3aa6ea68ac `vpospar': support ^ result set mode
206ccece14 Add *message-id*, and slightly change default
71fb868123 (fix) mx_header_subject_edit(): newer mailman resort [tag]: deal..
c9ed811266 Implement bracketed paste mode
2bba7bc5d1 mx-test.sh: t__tls__create(): deal with OSSL 3.2.0 security level..
0b00fa9b28 Rework mime-classification a bit (Dr. Werner Fink)..
03ee82f524 We need a fully fledged iconv DB!
b9f17c059a Add "send-text" `mimetype' type-marker flag to enforce text/plain..
1296c2ac5e Imply text treatment for any text/* MIME type (Stephen Isard)
f692f4f3dc a_main_startup(): check set[gu]id() return value (Solar Designer)
975a7ad3fd make.rc: clarify VAL_SYSCONFRC (Kevin Bloom)
63cd03d3e1 THANKS: Kevin Bloom
b364caef4a Set *mime-force-sendout* by default (Arkadiusz Miśkiewicz)
dc8a2a35ee THANKS: Arkadiusz Miśkiewicz
c7e9cde72f Fix obsolete *replyto* setting *reply-to*..
5847e47dd0 mk/make-config.sh: improve ancient shell compat (Thorsten Glaser)
7dcc8c954a THANKS: Thorsten Glaser
506b28bd1b mime.types: javascript also .mjs (Stuart Henderson)
0b79208b18 Finalize (?) codespell report fix (Jens Schleusener)
4805faab7d *on-program-exit*: define it more (Robert Elz)..
c40ca69be6 Do not use HOST_NAME_MAX (Claus Assmann)
307ac35df2 termios: support being a (background)& process (Robin Humble, Chet
        Ramey)..
136d5f6276 THANKS: Robin Humble
b48b6c7b17 Re-define interactive: STDIN *and* STDOUT are isatty(3) (Robin
        Humble)..
fd186509b8 S/MIME test: support several digests (Tomáš Korbař)..
76cdee9cf4 S/MIME: Blake2 is not supported for CMS/PKCS7 (Tomáš Korbař)..
3c7ae20aa1 *{mime-sign,tls-fingerprint}-digest*: changes (Tomáš Korbař, Viktor
        Dukhovni)..
b1e1c7ad62 THANKS: Tomáš Korbař
cfdcea2a49 THANKS: Viktor Dukhovni
c533897cdb nail.1: try improve *from* docu (Tomáš Korbař)
b224b6eacd shexp: allow "uns i; if -z $i; ec ya; end" to succeed (like [[ ..
        ]])
4f66ddc5e9 a_fs_fgetline_byone(): fix 11 year old brainfart..
1a4c716c7b n_collect(): FIX bug from 2023-10-24..
4fda22ba67 *quote-fold*: allow symbol specification (Stephen Isard)
3e28936614 *quote-fold*: FIX possible crash (Stephen Isard)..
e2397d789c Overload *quiet* to not `type' part info etc (Stephen Isard)
dfac7added *obsoletion*: new variable: diversify these warnings!
302e87f21e (BWDIC!) shexp: support "$@$@"; support "field splitting"..
7d87b65cdf *expandaddr*: add "forcename" (Stephen Isard)
4186509d45 S/MIME: follow OpenSSL 3.5, default to AES256 not 128 (RFC 5751)
426b9eb49e Add --copyright; drop "All rights reserved" where still present..
5bac945c19 gcc 15.1 revealed string init fault of mine (Martin Uecker)..
f6c243a864 THANKS: Martin Uecker
fab81a7ad2 shexp: $* field splitting: go ksh93 with *posix* (Geoff Clare)..
1d69be9932 mk/make-config.sh: TERMCAP only with MLE
5046b180ba MLE: bracketed paste mode: go wchar..
9d42470f3d `if': doc+test all tokens in AND-OR are expanded
17e6b02538 -u, setfile(): pass through real errno; -u: exit _NOPERM at times
0269604549 savedeadletter(): fix: without headers, would dump body line as
        header
3ba4944235 Refine SIG(HUP|INT) (Dag-Erling Smørgrav, Kyle Evans)..
3dd4ca2230 THANKS: Dag-Erling Smørgrav
b7b9618a82 a_coll_dead_save(): added: include headers when *save* in $DEAD!..
d996353802 a_main_startup(): in reproducible mode, reset signals (Kyle
        Evans)..
2106d7c8ec header_is_known(): at times only search virtuals (rahl)..
16759ce49e a_header_extract_ignore_field_XXX(): skip Date: headers (rahl)
51b469d6ac THANKS: rahl
dcb06be481 Parse Date: from messages, use it if found+ok (rahl)..
f7ee9f2503 nail.1: git send-email (rahl)
4858b59910 a_mps_multipart(): fix: RFC 2046 allows "FWS" after boundary (mia
        soweli)
ef88605276 THANKS: Mia Soweli
a999912c86 `headerpick': FIX "retain/ignore *" ("(fast) shorthand setting")..
af45d1e0ed Add `(un)?headerorder' command(s) (plus ~M+ FIX)..
11ef566b7d a_shexp__arith_op_apply(), `vexpr': avoid UBSAN issues (Harald van
        Dijk)
88f318e5e5 MLE: oops, turn off bracketed paste mode for mle-prompt-char!
88f5f06ffd Add *cols* as an "alternative" for $COLUMNS
f76b254ac8 mx_flthtml_reset(): use *cols* instead of $COLUMNS; (BWDIC!)
        FIXes..
caa300dc5d Honour *cols* for SEND_TODISP*, and SEND_TOQUOTE*..
b1e720e8a1 (BWDIC!) Fix `pipe', change `Pipe', drop `Show'..
82e90ad4e1 `colour': ignore RGB (24-bit; yet!), treat as 256 (Gavin Troy)
334ac84104 FIX `uncolour' (also: with preconditions++) (Χάρης
        Καραχριστιανίδης)..
d16bfa6c66 nail.1: certain multi-byte -> multibyte (Geoff Clare)
943ae1cbb0 `vexpr': add rand[su] subcommands
0fc4d33880 FIX From_ quoting in first body line (since before v14.8.0 -- 11
        years!!)
1857037dd2 a_folder_mbox_setptr(): (BWDIC!) "do stuff", I (mia soweli)..
341f888d5f nail.1: clarify *hold*/*keepsave*, `hold'/`mbox'/`touch' (Ryan
        Matthews)
68f96777a8 THANKS: Ryan Matthews
e3d7536040 Normalize compose mode history entries (better), II..
50691746a7 *history-file*: rewrite handling a bit..
e253d8667c *ignoreeof*: honour POSIX: if set no EOF at all..
5d39aeeafb mx_visual_info(): FIX: treat mbrtowc()==-2 just like -1..
67c82c2330 `fop': mkdir: add mode arg: name [mode [recur]]
140c9e6f1d a_folder_update_mailname(): avoid realpath(2) for /dev/null..
5ab4321ffc Add *expert* option (Norman Ramsey)
7c7b62919c THANKS: Norman Ramsey (eight years too late!!!)
c836256059 Add mle-prompt2 and -promptx colours, use them..
fef5cf288b IMAP: add *imap-auth*=plain (Stephen Isard)
86ee445fd6 icodec: add IDEC_MODE_(SIGN|WSP)_DISABLE (Sergey Matveev)
89318261ee nail.1: polish, III (Ashton Fagg)
8bceae009a *mime-counter-evidence*: give meaning to empty value!
857da248f9 okeys: more implied defaults (Arkadiusz Miśkiewicz, Kevin Bloom)..
b93da16039 Add OPT_OAUTH_HELPER, default enabled
21db4f74a1 Allow sending mail without primary recipients (RFC 5322)
845d819608 Fix: *mta*=test: honour *mbox-fcc-and-pcc* as documented
6346d34144 Add *build-dotlock-helper* (in spirit of *build-oauth-helper*)
7b697adbdd Add OPT_BUILD_TESTS "umbrella option" (package convenience)
d65f969e3e RFC 5321, 2.3.5: allow plain <postmaster> (with *hostname*=)
==alpha

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

Entries for releases before v14.10.0 have been cut off and can be
found in the git(1) repository:

  v14.9.0 - v14.9.25: $ git show v14.9.25:NEWS
  v14.8.0 - v14.8.16: $ git show v14.8.16:NEWS
  v13     - v14.8.5 : $ git show v14.8.5:NEWS
  9.0     - 12.5    : $ git show heirloom:ChangeLog

Also accessible via HTTPS?, just replace X.Y.Z accordingly:

  https?://git.sdaoden.eu/browse/s-nail.git/plain/NEWS?h=vX.Y.Z

For even older releases you need to look into the [timeline]
branch, but no changelog has been administrated for them.

Copyright (c) 1997 - 2024, Steffen Nurpmeso <steffen@sdaoden.eu>
@(#)site/code-nail-ann-alpha.html-w42 1.1 2026-04-08T15:55:01+0000