# Release checks — Lantern Terminal 0.5.0

Date: 10 November 2026. Linux build environment: x86-64 Ubuntu, GCC 15.2, Qt 6.10.2, CMake/Ninja. Windows cross build: MinGW-w64 GCC 13 POSIX, Qt 6.8.3, Windows resource metadata and NSIS user installer.

## Automated checks

- **New in 0.5.0.** All 16 ctest suites pass on Linux (four new):
  - **Built-in SSH engine, 44 checks** (24 new) against a disposable OpenSSH server with throwaway keys and agent: a jump host, a forwarded agent listing the local agent's key, X11 forwarding to a fake X server (the fake cookie is removed before the server sees the client), FIPS mode refusing an Ed25519 key and logging in with ECDSA and AES, FIPS settings with no approved cipher refused before connecting, an Ed25519 OpenSSH certificate login, StrictHostKeyChecking=yes refusing an unknown host, ServerAliveCountMax keepalives answered, and an unknown OpenSSH option still using OpenSSH.
  - **SFTP browser and Copy Public Key, 24 checks** (new) against a disposable server whose authorized_keys lives in a test folder: host-key question in the window, upload of a file and a folder (contents, permissions, modification time, no .part left), a download resumed from its .part file, New Folder, Rename, Permissions, recursive Delete, an unopenable folder reported, browsing through a jump host; adding a key, a key-only test login, required permissions, adding the same key once, the misspelt authorised_keys note, and a private key refused.
  - **Xmodem, Ymodem and Kermit, 9 checks** (new) against lrzsz (`sx`, `rx`, `sb`, `rb`) and G-Kermit: Xmodem download, Xmodem and Xmodem-1K uploads, Ymodem batch both ways with exact sizes, an existing file renamed, a Kermit download starting by itself, a Kermit upload with control and 8-bit bytes, and cancel removing the partial file.
  - **RDP, 11 checks** (new) against FreeRDP's shadow server on a private Xvfb display with an NTLM SAM file and a stand-in password store: certificate shown, NLA login with a credential's password, the login window when no password is saved (with a domain field, `DOMAIN\user` accepted), the remote picture, the certificate remembered and not asked again, keyboard input reaching an xterm on the server, Ctrl+Alt+Del, a wrong password reported, a changed certificate refused. The shadow server has no clipboard or display-control channel, so RDP clipboard and follow-the-tab resizing are not covered.
  - **Update check, 4 checks** (new) against a local web server: newer version offered, older not offered, unreadable and missing feeds reported.
  - **99 core checks** (19 new): C1 CSI, selective erase, left/right margin wrapping, DECDWL, DECCOLM (also split across reads), sixel split across reads and the cursor below it, an oversized sixel refused, clearing removes images, other DCS strings still reach the engine, sixel in xterm device attributes, Wyse 60 and SCO ANSI translation, function keys per terminal type. A screenshot showed double-width and double-height lines and a sixel image drawn correctly.
  - **89 workspace checks** (17 new): F10, F1, Alt+F5 and the "function keys to the remote program" option; tear-off tabs (new window, shortcuts there, dock back, closing a torn-off window, closing the main window); sync between two computers (local fields kept, newest change wins, deletions carry over and do not come back, a damaged sync file left alone).
  - The SSH Agent window's passphrase path (ssh-add with Lantern as the askpass program) added a passphrase key to a throwaway agent.
  - **Windows build under Wine** (private displays): RDP against the same FreeRDP shadow server, 3 checks (certificate question, login window and remote picture, keyboard input reaching the server, certificate remembered), using FreeRDP's built-in NTLM because Wine's own needs Samba; the built-in SSH engine check passes again.
  - **Not tested:** RDP clipboard and resizing against a real Windows server, Update Now installing a package (needs a published release), tear-off drag-docking on Wayland and Windows, X11 forwarding to a real X server, Kerberos against a real KDC, RDP on physical Windows (native SSPI login) and the rest of the Windows build on physical Windows.

- **New in 0.4.2 — New BBS session moved to the Tools menu:** 2 new workspace checks (72 in total). The ordinary new-session wizard has no BBS box and still lists every protocol; Tools → New BBS session… offers network protocols with Telnet first and saves a session with the BBS settings. All 12 ctest suites pass.

- **0.4.1 — Apply BBS settings:** 2 new workspace checks (70 in total). Selecting a folder converts its sessions and keeps their host, port and font size; local shells are skipped; with nothing selected nothing changes. All 12 ctest suites pass; the Windows installer and built-in SSH engine checks pass under Wine; the source archive builds and passes its tests from a path containing spaces.

- **New in 0.4.0 — BBS support.** All 12 ctest suites pass on Linux, three of them new:
  - **RLogin, 7 checks** against a loopback RLogin server: handshake fields, the window-size request sent as TCP urgent data, unescaped data, the hidden acknowledgement byte, a credential with a vault password (stand-in Secret Service tool, never the desktop wallet), and an unknown credential stopping the connection.
  - **BBS session, 7 checks** over Telnet: binary mode both ways, terminal type `ansi-bbs`, all 256 byte values in each direction, `CSI 6n`, CP437 symbols for control bytes, ANSI music not shown, clear-screen homing, box and block characters copied as Unicode.
  - **Zmodem, 14 checks** against lrzsz `sz`/`rz` over Raw TCP and Telnet binary mode: automatic byte-identical downloads (including an empty file), an existing file kept and the download renamed, a deliberately corrupted block recovered, queued uploads arriving byte-identical, cancel removing the partial file and returning to the terminal, `**B00` text not starting a transfer, and the disable option.
  - **80 core checks** (16 new): the ANSI-BBS filter with sequences split across reads, ANSI.SYS cursor behaviour, and pixel checks of bright bold, iCE backgrounds and gap-free VGA blocks. **68 workspace checks** (4 new): the BBS list import preview, Cancel, and Import without passwords.
  - **Windows build under Wine** (private display): the same RLogin protocol checks (Winsock urgent data), all 7 BBS session checks, all 14 Zmodem checks and the 15 SyncTERM compatibility checks pass. The credential check does not apply under Wine, because Windows uses Credential Manager rather than the stand-in tool. The installer and built-in SSH engine checks pass.
  - The TradeWars bot played a complete simulated day in a session using the new BBS template.
  - **Not tested:** Zmodem over RLogin and SSH, RLogin against a real BBS, and the VGA font and iCE colours on physical Windows.

- **New in 0.3.4 — crash regression check:** a script client asks for a message dialog, disconnects while it is open, and the dialog is then answered. 0.3.3 crashes (segmentation fault, the same stack as the reported crash); 0.3.4 passes. **64 workspace checks**, all 9 test suites, 30 integration checks, the SSH engine, SyncTERM compatibility and the TradeWars bot day pass again; the Windows installer and built-in SSH engine pass under Wine; the source archive builds and passes its tests from a path containing spaces.

- **New in 0.3.3 — 15 SyncTERM-Lua compatibility checks pass** against a scripted fake BBS (ANSI colour, CP437 bytes, a Yes/No prompt answered by a trigger, colour codes split across reads, positioned screen text, raw mode, timeouts, regex captures, bbs table, unattended answers), on Linux and under Wine. Outside the test suite, an unchanged SyncTERM TradeWars bot played a complete simulated day in Lantern and a LORD bot started, read its stats screen and stopped when the BBS hung up. **64 core checks** now include the CP437 round trip.

- **31 built-in SSH engine checks pass** against a disposable OpenSSH server, ssh-agent and HOME: fingerprint prompt before authentication, declining saves no trust, accepted keys saved and shared with the OpenSSH engine, negotiated algorithms in the status, shell commands, terminal type and PTY size, remote exit status, passphrase prompt naming the key with a wrong-then-right passphrase, scripts answering a login prompt, agent-first like OpenSSH, unauthorised key without automatic retries, automatic OpenSSH fallback for extra OpenSSH options, local forward with 1 MB integrity, SOCKS5 and SOCKS4a dynamic forwards, remote forward, an unreachable forward target not freezing the terminal, forwarding-only session, malformed forward line, cancelling at a prompt, changed host key refused, clean exit.
- **Windows built-in SSH engine passes under Wine** (private display): bundled libssh/OpenSSL/zlib DLLs, host-key prompt, key login and shell output against a disposable server. **Physical Windows:** the user confirmed a login through the Windows OpenSSH agent with the 0.3.2 preview build.
- **Read-only logins to three real servers** (OpenSSH on Debian 13 and Ubuntu) with the built-in engine and an agent key.
- **62 core checks pass:** previous coverage plus import merge/ID-clash/program-item reporting, column-correct search after wide and combining characters, log-name sanitising and the mouse wheel in full-screen programs.
- **62 workspace checks pass:** previous coverage plus control keys reaching the terminal, Ctrl+Shift shortcuts, SFTP-upload guard, expect/send ordering, reconnect policy with a real listener, immediate-failure handling, scripted Telnet negotiation (DONT/WONT, binary, refusal limits), paste line endings, CR translation and closing the last tab of a split group.
- **3 appearance checks, SSH trace handoff, Lua safety, 10 Lua integration checks and the tab-reuse regression pass.**
- **5 saved-session launch checks pass.**
- **30 native integration checks pass** (now using the built-in engine for SSH2 by default; SFTP still OpenSSH).
- **Windows/Wine installer checks pass** on a private display: per-user install, bundled Python and Lua over the named-pipe API, raw TCP, shortcut creation, upgrade preserving the profile, uninstall preserving user files.
- **Drawing:** a full 200×60 repaint takes about 2 ms (previously about 25 ms); output is pixel-identical to 0.3.1 except where highlights were previously misplaced after wide characters.
- **Packages:** the Debian package extracts and starts; the source archive builds and passes its tests from a path containing spaces.

Commands:

```sh
ctest --test-dir build/linux --output-on-failure
python3 tests/integration.py build/linux/lantern-terminal
python3 tests/launch_checks.py build/linux/lantern-terminal
python3 tests/libssh_engine.py build/linux/lantern-terminal
python3 tests/syncterm_compat.py build/linux/lantern-terminal
LANTERN_TEST_DISPLAY=:<private Xvfb> python3 tests/windows_smoke.py
python3 tests/windows_libssh.py  # starts its own private Xvfb
```

Tests use disposable profiles, temporary keys and loopback endpoints. No production SSH server, service configuration, user SSH trust store or pre-existing terminal profile is modified.

## Limits

Wine is a Windows binary/installer smoke test. It does not validate physical Windows ConPTY/serial/provider/printer behaviour. Physical Windows hardware, real serial control lines, physical printers, X11 and organisation-specific certificate/GSSAPI/provider integrations remain untested. The broader compatibility and API limits are in CAPABILITIES.md; the full 65-scenario acceptance contract is not being represented as entirely implemented or passed.

The supplied Linux package declares its actual Qt/system dependencies and targets a compatible build distribution. Source build instructions are provided for other Linux systems. Windows uses a system OpenSSH client when present; the bundled portable fallback retains its upstream Preview designation.
