Releases: andy5995/NoCarrierMail
Release list
v0.54
- Windows: keep your settings and mail under %APPDATA%\ncmail. Windows sets no
HOME, so the reader used the directory it was started from -- for the Start
Menu shortcut that is the install folder, which is not writable, and the
settings file could not be saved ("Error writing config file"). (#38) - Windows: a settings file next to the program takes precedence over
%APPDATA%\ncmail, so a portable copy keeps working, and so does an older
installation that has always kept ncmail.rc beside ncmail.exe. - Quote names taken from a packet before passing them to the archiver. A packet
could name itself in a way that ran a command. - Limit the length of the text fields read from an OPX packet header. A crafted
packet could overflow a buffer. - Read the door name and version from a QWK DOOR.ID without assuming the lines
are well formed. A long or malformed line could overflow a buffer or crash. - Update .ncmailrc and the colors file in place: your own comments and the order
of the lines are kept, and the file is only touched when its keywords differ
from the program's, so a new version alone no longer rewrites it and prompts
you. (#34) - Draw text as Unicode on macOS and the BSDs too, where the wide curses calls
were being compiled out. The build now asks curses for them, and the macOS
build uses a Homebrew ncurses if one is installed. - New "--version" and "--help" options. --version also reports the curses
library, and whether the build and your terminal can show Unicode characters,
which is worth including in a bug report. - Draw ANSI art with the real block and line characters on a UTF-8 terminal,
instead of the substitutes used when a terminal has no such characters. The
character set setting no longer changes how the art looks there. - Hold ANSI art to 80 columns and centre it. On a wider terminal each row used
to run on into the next one, which sheared the picture. - Fix a crash when the terminal was resized while the ANSI animator was
running. The animator ignored the resize instead of passing it on. - Remove the animation feature from the ANSI viewer. A program written for
viewing animated ANSI does the job better. - Release a macOS build for Apple Silicon: a tarball holding the program, the
man page and the example color schemes. See README-macos.txt inside it. - A Homebrew formula, in packaging/homebrew, for installing on macOS.
- The AppImage now bundles its own C library and terminfo database, so it runs
on any Linux distribution, including musl-based and very old ones. - The DOS download is now a zip file with a short name, like ncm054.zip. It
holds NCMAIL.EXE and the documentation as text files. Every name inside fits
the 8.3 rule, so you can copy it to a DOS computer and use it as it is. The
old download had a long name that DOS could not keep. - The Windows installer is about 1 MB smaller.
- New icon. The old one still showed the MultiMail name.
- Keep long names and addresses inside the window when showing a letter header
or the address book, and when writing a header to a file. - The "Charset:" popup shown by "C" now disappears on the next keypress.
It used to stay on the screen and be partly overwritten as you moved
through the list. - Show the last line of the ANSI viewer's help screen. "Q - Quit ANSI viewer"
was cut off. - Draw the shadow under a popup correctly when the text behind it is not ASCII.
- Free the prompt window that "T" (take tagline) opens in the letter window.
Each use leaked about 6 KB. - The "Version" line in .ncmailrc and the colors file is no longer written or
read. Nothing used it once the check above stopped depending on it. An
existing line is ignored, and commented out if the file is ever updated.
v0.53
-
Support Synchronet's VOTING.DAT: show each message's up/down vote count, show
polls as messages with their results, and cast your own votes with 'W'. -
On a UTF-8 terminal, draw text through the wide curses API instead of writing
raw single bytes, so accented characters no longer disappear or swallow the
character next to them. CP437 text is mapped to Unicode for display. (#29) -
Renamed the project from MultiMail to NoCarrierMail. The binary is now
ncmail, the config file is~/.ncmailrc(ncmail.rcon DOS/Windows), and
the default data directory is~/ncmail. Copy~/.mmailrcto~/.ncmailrc
to keep your old settings. -
Fix a crash when reopening a Blue Wave packet whose reply had subscription
changes: reading the saved area-change list walked off the start of the line
buffer on the blank lines between area entries. -
Treat a Blue Wave area you are subscribed to (the INF_SCANNING flag) as
active, even when the packet carries no new mail for it. Before, only areas
with messages could be unsubscribed, so most areas could not be dropped and
the "Subscribed" list showed too few areas. -
Fix a crash (or silent string corruption) when viewing ANSI/Avatar art
containing an escape sequence with more than one parameter, caused by an
overlapping strcpy in the escape-parameter parser. -
Detect QWK packets whose .NDX entries point into a message body instead
of a header and fall back to indexing directly from MESSAGES.DAT, instead
of filling the letter list with "ERROR READING MESSAGES.DAT". -
The C key (toggle console charset) now shows the new charset in a popup,
so the change is visible even when the current text is all ASCII. -
When the external viewer (L key) is a GUI program, show a notice on the
terminal while it is open, so mm no longer looks hung behind it. -
Accept UTF-8 input in editable fields (To, Subject, taglines, etc.). A
pasted or composed character is folded to the single-byte internal encoding;
characters that don't fit become '?'. Fixes mangled non-ASCII names like
"Björn Felten". -
In the message list, size the From and To columns to their actual content
and give the leftover width to the Subject column, instead of a fixed 50/50
split. Long subjects (QWKE, SOUP, OMEN, or QWK with HEADERS.DAT) now use the
freed space when the names are short. -
Fixed a crash (out-of-bounds read) when opening a packet after closing
another, triggered from the Personal area's message lookup. -
Fixed a memory leak when cancelling a reply being entered.
-
Fixed a memory leak when a packet fails to open (e.g. a corrupt archive).
-
Fixed undefined behavior (a negative left-shift) when parsing a QWK message
header whose block count is zero or blank. -
Cancel the "Max lines per part?" split prompt on empty input, instead of
silently proceeding with the previous value. -
Fixed a shell command-injection: paths and filenames are now fully quoted
before being passed to the external (de)compressor or editor, not just when
they contain a space. -
Allow 71-character To/Subject when composing QWK replies if the packet
ships a HEADERS.DAT, not only when QWKE is enabled -- so full-length
headers can be entered (and written to HEADERS.DAT) on Synchronet packets
with QWKE turned off. -
Fixed an out-of-bounds read in the ANSI viewer (e.g. when showing a
bulletin), which could crash the reader. -
Fixed a crash (heap corruption) when editing a saved reply.
-
Fixed a buffer over-read on blank lines in packet control files.
-
Fixed a memory leak in the help window.
-
Choosing "Kill" for existing replies when opening a packet now asks for
confirmation first, so an accidental "K" no longer deletes them. -
The packet-delete confirmation in the packet list now defaults to "No"
(so Enter no longer deletes the highlighted packet). -
Read Synchronet HEADERS.DAT, when present, for full-length From/To/Subject
in QWK packets (instead of the 25-character MESSAGES.DAT fields). -
Write Synchronet HEADERS.DAT in QWK reply (.REP) packets so user-authored
From/To/Subject fields longer than 25 characters survive the round trip.
(wmcbrine/MultiMail#22) -
New "Ctrl-R" key in the packet list jumps to the reply directory, for
browsing the saved reply (.REP) packets there. -
The reading view now renders dates with a configurable "DateFormat"
(a strftime string), defaulting to your locale ("%x %H:%M") instead of a
fixed US m-d-y. Applies to QWK and .OPX packets and Blue Wave replies;
Internet (SOUP/Usenet) and BBS-defined dates are still shown as received.
(upstream issue #6) -
Build system: switched to Meson for Unix/Linux, macOS, and Windows
(MSYS2 with ncurses, MSVC with PDCurses), with per-platform CI and a
unit-test suite (also run under AddressSanitizer/UBSan). The top-level
GNU Makefile was removed; the DOS/OS2 cross-compiler makefiles remain. -
New "Viewer" keyword and "L" key in the letter window: open the current
message in an external viewer -- a terminal pager like "less", or a GUI
editor like "mousepad" -- so links can be clicked and text selected.
Defaults to $PAGER, else "less" (Unix) or "more" (Windows/OS2).
The following landed in the MultiMail repository
(https://github.com/wmcbrine/MultiMail) after 0.52 but were never part of a
tagged release; they ship here for the first time:
-
The ANSI viewer now handles Renegade/Telegard pipe color codes, including
the single-letter Celerity codes. -
The ANSI viewer interprets Synchronet color codes; the letter viewer strips
them and skips Synchronet kludge lines. -
Fixed crashes triggered by some malformed .NDX files.
-
Fixed a segfault on exit with the PDCurses/SDL backend.
-
An empty .MIX file is now tolerated instead of causing an abort.
-
Fixed reading back .PDQ reply files.
-
Preserve the case of existing .XTI and .FDX files, so duplicate copies are
not archived.
snapshot
MultiMail Snapshot Release