Skip to content

Releases: TrekMax/rtcom

v0.2.1

18 Apr 14:19

Choose a tag to compare

v0.2.1

Patch release cleaning up the partially-published v0.2.0: rtcom-core 0.2.0 made it to crates.io, but rtcom-config, rtcom-tui, and
rtcom-cli did not — this release ships the full four-crate set and
folds in the post-tag security updates.

Changed

  • MSRV bumped from 1.85 to 1.88 (driven by the dependency
    upgrades below).

Security / Dependencies

  • Upgraded ratatui 0.280.30 and tui-term 0.10.3 to
    pick up lru 0.16.3+, which patches [GHSA-rhfx-m35p-ff5j]
    (IterMut Stacked Borrows soundness; CVSS v4 LOW 2.7). lru is a
    transitive dep via ratatui-core; the advisory is not reachable
    from rtcom's own code but the fix flows in automatically. Also
    pulls vt100 0.150.16 to match tui-term 0.3's Screen
    trait bound.
  • Upgraded time to 0.3.47+ to patch [GHSA-r6v5-fh4h-64xc] (stack
    exhaustion DoS via untrusted time parsing; Medium severity). rtcom
    does not parse time from untrusted input, so the risk is low, but
    the patched version is free to pick up once MSRV allows it.
  • Added .github/dependabot.yml that ignores the rand < 0.9.3
    advisory ([GHSA-cq8v-f236-94qc], CVSS 0 Low). rand 0.8.6 appears
    in Cargo.lock only as a ghost entry pulled by the unused
    termwiz feature of ratatui (via phf_generator); cargo tree --workspace --all-features confirms it is never compiled into the
    binary.

Fixed (release pipeline)

  • release.yml now publishes all four crates in dependency order
    (rtcom-corertcom-configrtcom-tuirtcom-cli).
    Previously only rtcom-core and rtcom-cli were listed; the
    rtcom-cli step failed during v0.2.0 because its path deps were
    not yet on crates.io.

Installation

cargo install rtcom-cli --locked

Or download a binary for your platform:

Platform Architecture Asset
Linux x86_64 rtcom-x86_64-unknown-linux-gnu
Linux aarch64 rtcom-aarch64-unknown-linux-gnu
macOS Intel rtcom-x86_64-apple-darwin
macOS Apple Silicon rtcom-aarch64-apple-darwin
macOS Universal rtcom-universal-apple-darwin
Windows x86_64 rtcom-x86_64-pc-windows-msvc.exe
SHA-256 checksums
08f8e3e5baf8e96956aca075dcc9083c3b56d3740173c1cc7faa0d8d2fe60eaf  rtcom-x86_64-apple-darwin
42048686f398432f8071124f23d28ccbcc0276f9a731968ea192f9814c1694e3  rtcom-aarch64-unknown-linux-gnu
728ed4094f0a9b9fb2c133717852c7581eb749a2a8f9d7ecee0a47562101ca0a  rtcom-x86_64-pc-windows-msvc.exe
75f828c545e3ec0c3136d2121e29448ea067bda51c68f9e6daef0c9f6a96a827  rtcom-x86_64-unknown-linux-gnu
a749d28b6992b4a03462ee9b54eb4cea7368328e1380a742efd4717ad18def5d  rtcom-universal-apple-darwin
a8ae61593d756bc5c8c246e0eb9772784d4e2cad39ab3b101566458c1ffed4b7  rtcom-aarch64-apple-darwin

v0.2.0

18 Apr 10:52

Choose a tag to compare

v0.2.0

Added

  • Full-screen ratatui TUI with three modal styles (overlay / dimmed /
    fullscreen). See docs/tui.md.
  • ^A m opens a minicom-style configuration menu covering serial port
    setup, line endings, modem lines, profile save/load, and screen
    options.
  • Profile persistence via ~/.config/rtcom/default.toml (XDG standard,
    platform-native equivalents on macOS / Windows).
  • -c PATH / --config PATH to override the profile location.
  • --save writes the effective startup configuration to the profile.
  • Event::MenuOpened / Event::MenuClosed / Event::ProfileSaved /
    Event::ProfileLoadFailed / Event::ModemLinesChanged for
    subscribers (log capture, scripts).
  • Session::apply_config applies a full SerialConfig atomically with
    rollback on partial failure.
  • Toast notifications for profile IO + errors (3-second auto-dismiss).
  • LineEndingConfig, ModemLineSnapshot, ModalStyle public types
    for downstream consumers.
  • Snapshot-tested UI at 80×24 and 120×40 for regression safety.
  • Two new crates: rtcom-config (profile persistence) and rtcom-tui
    (ratatui UI layer).
  • New ADRs: 008-ratatui-tui,
    009-vt100-emulator,
    010-directories-xdg.
  • Scrollback navigation in the serial pane via Shift+PageUp/Down,
    Shift+Up/Down, Shift+Home/End, and the mouse wheel. Top bar
    shows [SCROLL ↑N] (yellow) when the view is above the live tail.
  • New profile key [screen].wheel_scroll_lines (default 3) tunes
    the mouse wheel scroll speed. Hand-edit the TOML to change; a
    menu-editable control lands in v0.2.1.

Changed

  • BREAKING: rtcom now requires a real TTY on stdin/stdout; piping
    through a non-TTY process no longer works.
  • BREAKING: the v0.1 stdout line-by-line renderer is removed.
  • rtcom-cli no longer owns the terminal lifecycle — delegated to
    rtcom-tui.
  • crossterm bumped from 0.27 to 0.28 (ratatui transitive unification).
  • Bottom-bar label corrected from ^A q quit to ^A ^Q quit — the
    actual binding is Ctrl-Q (or Ctrl-X), not the plain letter q.
  • Serial port setup dialog now surfaces a hint line when any CLI flag
    (-b, -d, -s, -p, -f, --omap/--imap/--emap) is
    overriding the loaded profile value. Clarifies the defaults <
    profile < CLI merge priority that tripped users during smoke testing.
  • Line endings dialog now shows inline recipes ("imap = crlf for
    \n-only devices" etc.) so users don't have to consult the manual
    to translate the minicom rule names.
  • docs/tui.md gains a "Line endings recipes" section with
    symptom→cure guidance for common device behaviors.

Deprecated

  • None for this release. A future v0.2.1 may add a ^A q alias so
    typing the plain letter works too; the current fix is label-only.

Fixed

  • Partial section parsing in profile files now falls back to section
    defaults instead of erroring out.
  • Line-ending changes applied via the menu's F10 (Apply + Save) now
    persist to the profile file. Previously both Live and Save paths were
    blanket-deferred; only Live actually required the runtime-mapper
    refactor (v0.2.1).

Deferred to v0.2.1 / later

  • Live line-ending changes (currently requires restart).
  • Real-time modem status display (CTS/DSR/RI/CD polling).
  • Mouse-driven text selection + copy in the serial pane. For v0.2,
    hold Shift while clicking and dragging — most terminal emulators
    treat Shift+drag as a bypass of rtcom's mouse capture, letting
    the terminal's native selection + copy work.
  • Menu-editable [screen].wheel_scroll_lines (hand-edit TOML for now).
  • Multi-named-profile support (--profile <name>).

Installation

cargo install rtcom-cli --locked

Or download a binary for your platform:

Platform Architecture Asset
Linux x86_64 rtcom-x86_64-unknown-linux-gnu
Linux aarch64 rtcom-aarch64-unknown-linux-gnu
macOS Intel rtcom-x86_64-apple-darwin
macOS Apple Silicon rtcom-aarch64-apple-darwin
macOS Universal rtcom-universal-apple-darwin
Windows x86_64 rtcom-x86_64-pc-windows-msvc.exe
SHA-256 checksums
320c12a759ce7e293e57e33b6c861fc36132e99f4dc897dd648339febfbe9ae9  rtcom-x86_64-pc-windows-msvc.exe
424a71b1fe4372a640c638350438230a7dcf5fc2e4a7db3df5b30a21dfb7fe7d  rtcom-x86_64-apple-darwin
48c5b9db2ea29e1be115d402358dd813ad538df68bc5f30f8c86dd762a325523  rtcom-universal-apple-darwin
7b6cdb4b78bf80b02559ec1c08a45b35f05cb6a8d894e5562880725078e56efd  rtcom-x86_64-unknown-linux-gnu
ae00d63bdcb4b57bca814f987917081e6b06120a6f176cdf5c87a0f1cca3fc9a  rtcom-aarch64-apple-darwin
cef2748f472082a8309151f19b7d82ac31220fdb30165590e10002c1ed9ffa4e  rtcom-aarch64-unknown-linux-gnu

v0.1.2

17 Apr 12:35

Choose a tag to compare

v0.1.2

Added

  • --lower-dtr / --raise-dtr / --lower-rts / --raise-rts
    CLI flags mirroring picocom 1:1. Each lower/raise pair is mutually
    exclusive at the clap level. The deassert / assert is applied to
    the device immediately after open() and before Session takes
    ownership, and the resulting line state is fed to
    Session::with_initial_dtr / Session::with_initial_rts so the
    cached state stays honest and the first ^A t / ^A g toggle
    produces the right transition. Closes #1.

Fixed

  • rtcom -V now embeds the git commit hash for cargo install
    builds too, not just local cargo install --path checkouts.
    v0.1.1 from crates.io showed rtcom 0.1.1 (no hash) because
    build.rs's git rev-parse had no .git to read. The release
    workflow now writes crates/rtcom-cli/.commit-hash before
    cargo publish; build.rs falls back to that file when git
    is unavailable. Tarball builds therefore show
    rtcom 0.1.2 (abc12345).

Installation

cargo install rtcom-cli --locked

Or download a binary for your platform:

Platform Architecture Asset
Linux x86_64 rtcom-x86_64-unknown-linux-gnu
Linux aarch64 rtcom-aarch64-unknown-linux-gnu
macOS Intel rtcom-x86_64-apple-darwin
macOS Apple Silicon rtcom-aarch64-apple-darwin
macOS Universal rtcom-universal-apple-darwin
Windows x86_64 rtcom-x86_64-pc-windows-msvc.exe
SHA-256 checksums
3e65bf709e4f3c192c789633e327a4614f5b9d329ca8d5b737decc269a6aadd2  rtcom-x86_64-unknown-linux-gnu
3ea44324f65291f80f18be84c0014b21d18639e0a642f5d20cb90979bc8a5ae3  rtcom-universal-apple-darwin
5997b297c4f5a5f0fcb6d6ac0ab56572609ca9bd0b4b20d1daa510d92810b748  rtcom-aarch64-apple-darwin
a706391b9d817a8bd5efc7092e665d0fb521582ac785f846b86028add45b132c  rtcom-x86_64-pc-windows-msvc.exe
dbf5893a7fbd2864705d041aad0cd7e46f17d15d94e8b30f1b356e71c12996e2  rtcom-aarch64-unknown-linux-gnu
e952258411599b1cb7d5cc1ea1b40a7b5cd1fb9ec7cb423ca88148bb083cef4b  rtcom-x86_64-apple-darwin

v0.1.1

17 Apr 12:10

Choose a tag to compare

v0.1.1

A "make the v0.1 release actually publishable" patch. Binary
behaviour is the same as the late-v0.1.0 development binary that was
used during the first hardware smoke test; this release pins those
changes to a properly-tagged version that flows through the new
GitHub release + crates.io publish pipeline.

Infrastructure

  • Reworked CI: fmt / clippy (3-OS matrix) / test (3-OS matrix
    with libudev + socat on Linux for the e2e PTY suite) / doc
    (-D warnings) jobs split for fast feedback. Swatinem/rust-cache
    per-key.
  • New release.yml workflow on v* tag push:
    • 5-target build matrix (Linux x86_64 + aarch64-cross, macOS
      x86_64 + aarch64, Windows x86_64). Cross-compile uses
      cross with a
      Cross.toml that installs libudev-dev:arm64 for the aarch64
      target.
    • macOS universal binary via lipo.
    • GitHub Release page with auto-generated notes (CHANGELOG
      section preferred, commit-log fallback) and SHA-256 checksums.
    • cargo publish -p rtcom-core then -p rtcom-cli (with a 45 s
      sleep between for index propagation), gated on the release
      job succeeding.

Added

  • -V / --version now embeds the short git commit hash (and a
    -dirty marker when the working tree has uncommitted changes):
    rtcom 0.1.0 (5a103b2a) for clean checkouts,
    rtcom 0.1.0 (5a103b2a-dirty) otherwise. Falls back to the bare
    rtcom 0.1.0 for crates.io tarball builds where git is not
    available.
  • Lifecycle banner prints between the config summary and the
    interactive session (Terminal ready) and again on shutdown
    (Terminating... / Thanks for using rtcom). Suppressed by
    --quiet. Mirrors picocom's "Terminal ready" / "Terminating..."
    affordance so users can tell at a glance whether rtcom is up,
    in-session, or shutting down.

Changed

  • Default command-key escape switched from ^T (Ctrl-T) to ^A
    (Ctrl-A). Picocom's historical default; survives tmux's prefix
    binding and terminal emulators that use Ctrl-T for "new tab".
    Override with --escape '^T' to restore the previous behaviour.
  • Quit command keys are now ^Q (Ctrl-Q, 0x11) and ^X (Ctrl-X,
    0x18) instead of the plain letters q / x. Mirrors picocom and
    frees the letters to be sent to the wire as data without an extra
    escape dance. Type the escape key followed by Ctrl-Q or Ctrl-X to
    exit; plain q / x after the escape now fall into the
    unknown-command silently-drop path.

Fixed

  • Terminal renderer now surfaces Event::DeviceDisconnected as a
    *** rtcom: device disconnected: <reason> system message, with a
    post-cancel drain so the message is not lost when main trips
    the cancellation token immediately after Session::run exits on
    a disconnect.
  • main propagates session shutdown to the stdin reader and
    terminal renderer via a cloned cancel token, fixing a hang when
    the device disappears (previously stdin and the renderer kept
    running with nothing to do).
  • TTY-stdin sessions now print a quit-key hint at startup so users
    can find their way out without consulting the man page:
    rtcom: press ^A q to quit (Ctrl-C is sent to the device in raw mode).

Installation

cargo install rtcom-cli --locked

Or download a binary for your platform:

Platform Architecture Asset
Linux x86_64 rtcom-x86_64-unknown-linux-gnu
Linux aarch64 rtcom-aarch64-unknown-linux-gnu
macOS Intel rtcom-x86_64-apple-darwin
macOS Apple Silicon rtcom-aarch64-apple-darwin
macOS Universal rtcom-universal-apple-darwin
Windows x86_64 rtcom-x86_64-pc-windows-msvc.exe
SHA-256 checksums
5c6926c98bd3198977e4566f863b4e09e0fb4520b453628c0ab5a24321effa48  rtcom-x86_64-unknown-linux-gnu
a14017ca6b537b8fed9dc9dcac71e7467b908916d5654508373bf6fd34d7ebc3  rtcom-x86_64-pc-windows-msvc.exe
b4c12370eb0005cee8f102f902dba43a9ab765714b62e2cc1ba983a5c6040079  rtcom-x86_64-apple-darwin
efca01d01c619573ee69686f6395ff48ff6bb8a1faa0306611b7937821619271  rtcom-aarch64-unknown-linux-gnu
f40122a8fee2e9efa9d7a447a10cbc07404c958b210ba4096f80dba25999db2f  rtcom-aarch64-apple-darwin
fb41ec25795538586056529c481bd685d6d1cf4550267cf2bd48401c6f528cee  rtcom-universal-apple-darwin