2026-05-28
- modemu2k (v0.2.1)
  * Add -v/--verbose flag (CLI): installs a stderr log_fn and
    enables the AT%V3 verbose mask so the library's pre-existing
    narration sites (MISC + TELOPT) print without an extra AT
    command. -v previously meant --version, which now requires
    -V (breaking)
  * Fix at%q to actually quit; previously it only shut the socket,
    leaving the state machine running and ignoring the banner's
    "Enter 'at%q' to quit" promise
  * `modemu2k -v` (verbose alone, no -e/-c/-d/-l/-s) now prints
    usage and exits, matching bare invocation; `-e` is required
    to enter stdin AT mode
  * Verbose narration now logs AT command dispatch (`dispatch: …`)
    and state-machine transitions (`state: X -> Y` across CMD,
    DIAL, ONLINE, DONE), in addition to the pre-existing telopt
    and sock/tty events
  * Ctrl-C (0x03) in CMD mode now quits when pressed twice in a
    row; one Ctrl-C arms and clears the partial input line, the
    next Ctrl-C with no intervening keystroke triggers shutdown
    via the same drain-then-DONE path as at%q. Online mode is
    unaffected (Ctrl-C still flows to the remote)
  * Fix -v silently no-opping when paired with `-e atz`-style
    init strings: the AT%V mask is now opened *after* the -e
    command runs, so it survives ATZ's atcmdNV reset. Interactive
    ATZ during a -v session still wipes pv as a known follow-up
  * `-v` with `-c` refuses to run when stderr is a TTY (would
    corrupt the comm program's display); redirect stderr first.
    The m2k-minicom / m2k-picocom helper scripts now forward
    arbitrary args to modemu2k, so `m2k-minicom -v 2>log` works

2026-05-27
- modemu2k (v0.2.0)
  * Refactor core into libmodemu2k; public API in modemu2k.h at the
    project root, with M2K_API visibility markers on every public
    function and M2K_VERSION_* macros + m2k_version() for
    header/library skew detection
  * Add steppable event-loop API (m2k_get_pollfds, m2k_step,
    m2k_run_done, plus M2K_STATE_DIAL for non-blocking ATD) and
    embed-mode I/O (m2k_setup_app_io, m2k_write_from_app,
    m2k_read_to_app) so a host program can run modemu2k inside its
    own poll/epoll loop with the host supplying the TTY-side bytes
  * Add curl-style per-context error reporting: m2k_set_error_buffer
    with M2K_ERROR_BUFFER_SIZE, m2k_strerror, and the M2K_ERR_*
    codes (including M2K_ERR_AT for rejected AT commands and
    M2K_ERR_WOULDBLOCK for flow-control retry)
  * Add m2k_escape, m2k_is_online, m2k_has_carrier, m2k_get_listen_fd,
    and m2k_set_dtr/_rts (with matching getters) for embed-mode
    hosts; DTR 1→0 while a connection is live hangs up
    (&D2-equivalent)
  * Add TCP listen mode (-l/--listen <port>) for use as a virtual
    modem backend (issue #32)
  * Print --help output and exit when invoked with no arguments;
    reject conflicting -c/-d/-l/-s combinations at parse time
    instead of silently honoring the last one
  * Wrap modemu2k.h declarations in extern "C" guards for C++ consumers
  * Per-ctx state separation: +++ escape detector, line buffer, and
    telnet option negotiation tables moved into m2k_t so two
    coexisting contexts no longer share/clobber each other
  * Detect POSIX PTY allocation via meson at configure time, fixing
    PTY setup on macOS and FreeBSD which the previous compile-time
    gate silently misdetected
  * Fix connecting via hostname when the first resolved address fails,
    e.g. localhost resolving to ::1 before 127.0.0.1 (issue #44)
  * m2k_setup_pty() now returns a const char* into ctx-owned storage
    instead of a heap-allocated string the caller must free (breaking)
  * Add HACKING.md with code map, contracts, and integration sketches;
    wired into the doxygen Related Pages
  * Deprecate m2k_dial / m2k_online; slated for removal in 0.3.0 — use
    m2k_run() or the step API instead
  * Remove gettext/NLS support and translations
  * Sync license claim to GPL-2-or-later (matches the source headers)

2022-08-18
- modemu2k (v0.1.0)
  * fix segfault when building with Slackbuild or setting buildtype to debug
  * fix build on macos (timeval errors, see
    https://github.com/theimpossibleastronaut/modemu2k/pull/40)
  * fix connecting to host using IP
  * replaced autotools build system with mesonbuild
  * 'm2k-minicom.sh' script renamed to 'm2k-minicom'

2020-06-19

  * v0.0.6 released

2020-06-18

  * Fix for compiling on gcc-10

2019-8-23

  * v0.0.5 released

2019-8-22

  * When making a connection, a message is printed informing the user
  how to escape to command mode and return to online mode.


2019-8-21

  * IPv6 connections can now be made.

  * To specify a non-standard port, you must use a space now instead of
  a colon


2019-8-19

  * Replaced obsolete gethostbyname() with getaddrinfo()

  * If the m2k-minicom.sh script is run from the scripts/ directory, it will
  use the dev build of modemu2k in src/


2019-08-18

  * v0.0.4 released

2019-08-17

  * Fixed --version output

  * Added script to invoke minicom: 'm2k-minicom.sh'

  * Infrastructure to implement testing with `make check` added.


2018-10-17

  * v0.0.3 released

2018-10-14

  * zh_CN translation added
  * nl_NL translation added

2018-10-13

  * Removed "-" option
  * Added support for translated messages using the GNU gettext library
  * Improved usage output
  * Now using getopt.h to parse cmd args

2018-10-11

  * it_IT translation of man page added


2018-10-08

  * pt_BR translation of man page added

2018-09-06

  * Added quit instructions to start-up screen
  * auto-generated config.h is now used
  * man file will now install
  * issue v0.0.2 release


2018-09-05

  * applied patch from https://github.com/aur-archive/modemu
  * Added configure script, autoconf and automake file
  * increase version to 0.0.2-dev
  * modemu2k Fork created

