-
zelnet v0.10.2 Stable
released this
2026-07-08 14:40:03 +00:00 | 0 commits to main since this releaseFixed
- CLI: an unrecognized
-/--flag is now a loud non-zero error instead of being swallowed as the
hostname (zelnet --bogusused to attempt a DNS lookup for--bogus). A release-pipeline
functional gate exercises the shipped binary to prove it. - CLI: an invalid port now exits non-zero (
zelnet <host> <badport>printed
invalid portbut returned success), matching the host-server verbs. A
release-pipeline functional gate exercises the shipped binary to prove it.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- CLI: an unrecognized
-
zelnet v0.10.1 Stable
released this
2026-07-03 17:34:34 +00:00 | 14 commits to main since this releaseAdded
- Multi-command
zelnet cmd:zelnet cmd "CMD1" "CMD2" ...runs N CL commands
sequentially in ONE remote-command job, so job state (CHGCURLIB,ADDLIBLE,OVRDBF)
set by an earlier command holds for later ones — the foundation for compiling into a
target library that the compile-time*LIBLmust resolve. Fail-fast: the first CL
escape stops the sequence and exits non-zero. Single-command output is byte-identical
to before; multi-command runs print azelnet: > CMDheader per command. Positional-arg
overflow is now a loud error instead of a silent drop.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Multi-command
-
zelnet v0.10.0 Stable
released this
2026-07-02 16:32:10 +00:00 | 20 commits to main since this releaseAdded
- Plain-telnet (NVT) mode — zelnet's third protocol personality after TN5250/TN3270.
--nvt <host> [port]is a byte-level pass-through liketelnet(1): the enclosing
terminal renders while zelnet answers negotiation (remote ECHO, SGA, the localTERM
as TERMINAL-TYPE, NAWS window reports with resize updates); Ctrl-] disconnects.
Works against Cisco gear, BBSes, Unix telnetd, and VTAM front doors in their ASCII phase. - Automatic NVT fallback: the default 5250 path degrades transparently into NVT
pass-through when the host negotiates an option no block-mode host uses (WILL ECHO/
DO NAWS), sozelnet some-switch 23just works instead of hanging. Block mode is only
entered when the server explicitly negotiates it — the detection cannot false-positive. - Scripted NVT gate:
--nvt --play "expect <t>; send <t>; type <t>; enter; pause <ms>; dump"drives a plain-telnet host headless with ordered, consuming expect matching —
a CI gate for NVT behavior (a missed expect exits non-zero). Pairs with--record. --recordnow also works with--drive(TN3270): scripted mainframe sessions record
their driven panels as asciicast reels, same as--playon 5250. NVT recordings are
raw byte-stream events (UTF-8-sanitized) with synthetic pacing.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Plain-telnet (NVT) mode — zelnet's third protocol personality after TN5250/TN3270.
-
zelnet v0.9.6 Stable
released this
2026-07-01 16:23:30 +00:00 | 29 commits to main since this releaseChanged
- Release cut through the hardened package signing path: the apt/dnf repos are GPG-signed
and verified by signature alone — the promote step no longer executes the built package's
maintainer scripts (dpkg postinst) next to the private signing key. No functional change
to zelnet.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Release cut through the hardened package signing path: the apt/dnf repos are GPG-signed
-
zelnet v0.9.5 Stable
released this
2026-07-01 13:54:19 +00:00 | 33 commits to main since this releaseAdded
- Unit test for
host.zig'sfmtEpoch— asserts a Unix epoch renders to the expected
timestamp string, covering the leap-year and 1-based day-of-month accounting so the
calendar math can't silently regress.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Unit test for
-
zelnet v0.9.4 Stable
released this
2026-07-01 08:37:19 +00:00 | 45 commits to main since this releaseAdded
- Free-roaming cursor: ↑↓←→ now move the on-screen cursor one cell (clamped) on a
field-less display — grid games like Number Munchers — and new--playverbs
up/down/left/right+csr <row> <col>drive it headless. The cursor position is
already reported to the host on AID, so RPGRTNCSRLOCreads the landed cell. Form
screens (nfields>0) keep Tab/field navigation. - Background colors via reverse-image: a
DSPATR(RI) COLOR(x)field now renders as a
FILLED colored cell (the color as an ANSI background + contrasting foreground), not just
a foreground tint. Enables filled grid cells / highlighted tiles.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Free-roaming cursor: ↑↓←→ now move the on-screen cursor one cell (clamped) on a
-
zelnet v0.9.3 Stable
released this
2026-06-30 15:51:32 +00:00 | 47 commits to main since this releaseFixed
--record: the asciicast now positions each row with an absolute cursor move (ESC[r;1H) and
disables autowrap, instead of emitting full-width rows followed by a newline. An 80-column row
autowrapped in the player's terminal and the trailing newline then doubled every line, scrolling
the screen so only the bottom ~12 rows survived. Frames now render the full 24×80 panel, matching
the live GUI.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
zelnet v0.9.2 Stable
released this
2026-06-30 14:22:42 +00:00 | 49 commits to main since this releaseAdded
--record <file>(with--play): write an asciicast v2 recording of the driven 5250 panels —
the source for the release pipeline's greenscreen video. Each driven screen is one frame with
synthetic ~1.5 s timing so playback is watchable even though the drive runs in milliseconds; the ANSI
render is captured verbatim (colour preserved, ESC hand-escaped). Validated on the full PARTMNT drive
(18 frames). Covered by awriteJsonEscapedunit test.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
zelnet v0.9.1 Stable
released this
2026-06-30 13:22:06 +00:00 | 51 commits to main since this releaseAdded
refute <text>: the negative twin ofexpectin the--play(5250) /--drive(3270)
golden-screen harness — fail if the (undesirable) text is on screen. Closes the other half of
behavior testing: assert the bad thing didn't happen (no stale row after a delete, no silent
overwrite/create, an error actually shown) — not just that the good thing did. Same self-verifying
non-zero exit, in bothdrive5250anddrive3270; covered by ascreenContainsunit test.
Removed
- The legacy
izname is gone.izwas folded intozelnetin 0.9.0; this drops the remaining
IZ_*environment aliases — use theZELNET_*equivalents (ZELNET_USER,ZELNET_PW,
ZELNET_HOST,ZELNET_ALLOW_PLAINTEXT). The password-level floorIZ_MIN_PWLVLis renamed to
ZELNET_MIN_PWLVL, and themake iz-*helper targets are renamed tomake host-*.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
zelnet v0.9.0 Stable
released this
2026-06-30 08:53:07 +00:00 | 58 commits to main since this releaseAdded
--play <script>: a scripted, headless TN5250 driver — the golden-screen TEST HARNESS for
greenscreen apps. Signs on (envZELNET_USER/ZELNET_PW), advances past any break-message screen
to the main menu, then runs a semicolon-separated script against the live panels:typeinto a
field, send an AID (enter/pf <n>), andexpect <text>/dump. Everyexpectis a
self-verifying gate, so a script exits non-zero on the first mismatch — greenscreen behavior is
now a CI gate (CALL a program, drive itsEXFMTpanels, assert the rendered data), not just
compile-success. The TN5250 twin of--drive(3270), built on the already-headless Session that
loginproves out — no TTY. Verbs:dump | expect | type | typepw | tab | backtab | home | field <n> | enter | pf <n>. Proven end-to-end driving therpg-inventoryPARTMNTmaintenance
panel on pub400 (CHAIN found + miss).src export <lib>: a first-class source extractor (the "reverse deploy") — pull a library's
source members off the box into a local Git layout (<out>/<srcfile>/<member>.<type>). For each
source file it lists the members (file server),CPYTOSTMFs each to an IFS temp (EBCDIC → CCSID
1208 UTF-8, LF) via the command server, fetches it, sniffs the source type (PFILE(→lf,
DSPSIZ→dspf, else pf;QRPGLESRC→rpgle), and writes it — reusing one file + one command
connection for the whole sweep (no fork-per-member). Folds the provenextract.shinto the
binary; the import primitive of IBMI-IMPORT.md. Flags:--out <dir>,--srcfiles A,B,
--filter PART*. Proven by round-trip onrpg-inventory(box → Git, 5/5 byte-identical).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads