Skip to content

Releases: andy5995/NoCarrierMail

v0.54

Choose a tag to compare

@andy5995 andy5995 released this 31 Jul 06:49
cee57c1
  • 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

Choose a tag to compare

@andy5995 andy5995 released this 25 Jul 06:22
8f1aa88
  • 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.rc on DOS/Windows), and
    the default data directory is ~/ncmail. Copy ~/.mmailrc to ~/.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

snapshot Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Jun 21:11

MultiMail Snapshot Release