Releases: TrekMax/rtcom
Releases · TrekMax/rtcom
v0.2.1
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
ratatui0.28→0.30andtui-term0.1→0.3to
pick uplru 0.16.3+, which patches [GHSA-rhfx-m35p-ff5j]
(IterMutStacked Borrows soundness; CVSS v4 LOW 2.7).lruis a
transitive dep viaratatui-core; the advisory is not reachable
from rtcom's own code but the fix flows in automatically. Also
pullsvt1000.15→0.16to match tui-term 0.3'sScreen
trait bound. - Upgraded
timeto0.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.ymlthat ignores therand < 0.9.3
advisory ([GHSA-cq8v-f236-94qc], CVSS 0 Low).rand 0.8.6appears
inCargo.lockonly as a ghost entry pulled by the unused
termwizfeature ofratatui(viaphf_generator);cargo tree --workspace --all-featuresconfirms it is never compiled into the
binary.
Fixed (release pipeline)
release.ymlnow publishes all four crates in dependency order
(rtcom-core→rtcom-config→rtcom-tui→rtcom-cli).
Previously onlyrtcom-coreandrtcom-cliwere listed; the
rtcom-clistep failed during v0.2.0 because its path deps were
not yet on crates.io.
Installation
cargo install rtcom-cli --lockedOr 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
v0.2.0
Added
- Full-screen ratatui TUI with three modal styles (overlay / dimmed /
fullscreen). Seedocs/tui.md. ^A mopens 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 PATHto override the profile location.--savewrites the effective startup configuration to the profile.Event::MenuOpened/Event::MenuClosed/Event::ProfileSaved/
Event::ProfileLoadFailed/Event::ModemLinesChangedfor
subscribers (log capture, scripts).Session::apply_configapplies a fullSerialConfigatomically with
rollback on partial failure.- Toast notifications for profile IO + errors (3-second auto-dismiss).
LineEndingConfig,ModemLineSnapshot,ModalStylepublic types
for downstream consumers.- Snapshot-tested UI at 80×24 and 120×40 for regression safety.
- Two new crates:
rtcom-config(profile persistence) andrtcom-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(default3) 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-clino longer owns the terminal lifecycle — delegated to
rtcom-tui.crosstermbumped from 0.27 to 0.28 (ratatui transitive unification).- Bottom-bar label corrected from
^A q quitto^A ^Q quit— the
actual binding is Ctrl-Q (or Ctrl-X), not the plain letterq. - 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.mdgains 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 qalias 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,
holdShiftwhile clicking and dragging — most terminal emulators
treatShift+dragas 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 --lockedOr 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
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 afteropen()and beforeSessiontakes
ownership, and the resulting line state is fed to
Session::with_initial_dtr/Session::with_initial_rtsso the
cached state stays honest and the first^A t/^A gtoggle
produces the right transition. Closes #1.
Fixed
rtcom -Vnow embeds the git commit hash forcargo install
builds too, not just localcargo install --pathcheckouts.
v0.1.1 from crates.io showedrtcom 0.1.1(no hash) because
build.rs'sgit rev-parsehad no.gitto read. The release
workflow now writescrates/rtcom-cli/.commit-hashbefore
cargo publish;build.rsfalls back to that file when git
is unavailable. Tarball builds therefore show
rtcom 0.1.2 (abc12345).
Installation
cargo install rtcom-cli --lockedOr 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
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.ymlworkflow onv*tag push:- 5-target build matrix (Linux x86_64 + aarch64-cross, macOS
x86_64 + aarch64, Windows x86_64). Cross-compile uses
crosswith a
Cross.tomlthat installslibudev-dev:arm64for 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-corethen-p rtcom-cli(with a 45 s
sleep between for index propagation), gated on the release
job succeeding.
- 5-target build matrix (Linux x86_64 + aarch64-cross, macOS
Added
-V/--versionnow embeds the short git commit hash (and a
-dirtymarker 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.0for 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 lettersq/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; plainq/xafter the escape now fall into the
unknown-command silently-drop path.
Fixed
- Terminal renderer now surfaces
Event::DeviceDisconnectedas a
*** rtcom: device disconnected: <reason>system message, with a
post-cancel drain so the message is not lost whenmaintrips
the cancellation token immediately afterSession::runexits on
a disconnect. mainpropagates session shutdown to the stdin reader and
terminal renderer via a cloned cancel token, fixing a hang when
the device disappears (previouslystdinand 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 --lockedOr 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