Skip to content

ethernet-gateway v0.6.1

Choose a tag to compare

@github-actions github-actions released this 06 Jun 21:31

Added

  • Raspberry Pi 4+ (aarch64 Linux) build — releases now ship an
    Ethernet_Gateway-aarch64.AppImage alongside the existing
    x86_64 Linux / Windows / macOS artifacts, built on a native arm64
    runner. Two ARM-only desktop-GUI fixes make it run on the Pi's
    VideoCore/V3D GPU: the wgpu device now requests exactly the limits
    the adapter advertises (so startup no longer aborts with
    "Limit 'max_color_attachments' value 8 is better than allowed 4" or
    the equivalent for other limits), and the GUI prefers the OpenGL ES
    backend instead of the Pi's incomplete Vulkan driver (which panicked
    with "Requested feature is not available on this device").
    WGPU_BACKEND still overrides. Other platforms are unaffected.
  • Punter (C1) file-transfer protocol — the protocol CCGMS /
    Novaterm / StrikeTerm speak natively on Commodore BBSes, added
    alongside XMODEM/YMODEM/ZMODEM/Kermit. Single-file C1 with the full
    two-phase (file-type then data) handshake, both block checksums
    (16-bit additive + cyclic), the "size of next block" framing, and
    the three-S/B end-off real C1 endpoints expect. Selectable in the
    telnet upload/download protocol pickers; the outbound PRG/SEQ file
    type is auto-detected from the filename. New punter_* tunables
    (block size, timeouts, retries) are editable from the telnet File
    Transfer settings menu, the web configuration page, and the desktop
    GUI, and persist to egateway.conf. The send/receive entry points
    take an open stream so a future Multi-Punter (MPP) batch wrapper can
    layer on without touching the wire code.
  • Serial modem AT+PETSCII=n command — toggles PETSCII⇄ASCII
    translation on direct-TCP dials (AT+PETSCII=1 on, AT+PETSCII=0
    off) so a Commodore 64/PET dialing ATDT host:port sees readable
    text instead of raw ASCII. Set-only, in the ITU-T V.250 +
    extension namespace (&P is the pulse-dial make/break ratio on real
    Hayes modems, so it is intentionally left alone). AT+PETSCII=1
    persists the setting immediately; AT&V reports it as +PETSCII:n.
  • PETSCII translation is now editable from every configuration
    surface
    — the per-port modem screen in the telnet/serial-console
    menu, the web configuration page, and the desktop GUI — in addition
    to the AT command. It is a per-serial-port setting saved to
    egateway.conf.
  • Serial: inbound PETSCII punctuation normalizer, and the C64 PETSCII
    DEL key (0x14, INST/DEL) is accepted as a command-line backspace
    when PETSCII translation is active. +++ escape sequences are
    traced when the gateway debug trace is on.
  • Persisted gateway_debug byte-trace flag, toggleable from the
    GUI/web General frame and the telnet Other Settings / Serial
    Configuration menus. Read fresh per gateway session (no restart
    needed); EGATEWAY_GATEWAY_DEBUG still forces it on. The trace now
    timestamps each input byte.
  • Web protocol reference pages served by the configuration web
    server — per-protocol references (XMODEM, YMODEM, ZMODEM, Kermit, the
    Hayes AT command set, and telnet), each documenting that protocol's
    retry/recovery behavior, plus character-set and ANSI escape-sequence
    references, reachable from a new References nav entry.
  • Kermit resume and locking-shift settings are now editable from
    the telnet Kermit settings menu, the web configuration page, and the
    desktop GUI (previously egateway.conf-only).
  • punter_hangup_on_failure — optional drop-carrier-on-give-up for
    Punter, editable from the telnet / web / GUI Punter settings. Because
    C1 has no in-band abort, a give-up otherwise leaves the C64 hung;
    enabling this drops carrier so it sees loss-of-carrier instead.

Fixed

  • AI chat: a follow-up question that merely starts with a menu command
    letter (e.g. "Quantum…") is no longer swallowed by the answer-screen
    navigation. A lone command letter still navigates; any longer line
    is sent to the model.
  • Transfer retry/recovery brought to strict spec. XMODEM/YMODEM now
    NAK on a data-phase inter-block timeout (re-prompting the sender) and
    cancel with CAN×3 on a non-duplicate block-sequence error instead of
    NAK-looping; ZMODEM routes every data-phase error through one bounded
    counter that re-sends ZRPOS and resets on progress (no infinite ZRPOS
    loop on a permanently-corrupt stream); Kermit emits an Error packet
    when it gives up so the peer is told rather than left waiting.
  • Punter no longer strands a peer on a failed transfer. A cancel /
    restart from the C64 side is tolerated (longer pre-transfer input
    drain), and corrupt-block recovery is bounded by its own larger round
    cap rather than quitting early and leaving the peer hung.

Changed

  • Removed the duplicate Port A/B status banner from the main
    configuration menu — per-port mode is already shown under Serial
    Configuration.
  • Punter bad-block cap decoupledpunter_max_bad_rounds (default
    30) bounds consecutive corrupt-block resend rounds separately from
    punter_max_retries, since a real C64 peer never caps resends and a
    low shared cap made the gateway give up first and strand it.

Security

  • Updated russh 0.60.2 → 0.60.3 to clear two high-severity
    (CVSS 7.5) allocation-DoS advisories in the SSH stack:
    RUSTSEC-2026-0154 (russh unbounded 32-bit allocation) and
    RUSTSEC-2026-0153 (russh-cryptovec unchecked CryptoVec
    allocation/growth). A malicious SSH client could otherwise drive
    unbounded memory allocation on the SSH listener.