# Limitations

- Tried on real computers: tear-off tabs and RDP sessions (new in 1.8.0) have been tried on a Linux desktop and on Windows with several monitors, including two RDP sessions at once. The system RDP program option (FreeRDP or mstsc) has not been tried.
- Tear-off tabs: docking by dragging back needs window positions, so on Wayland use "Dock to Main Window" or close the window, and a torn-off window is placed by the desktop, not at the pointer. Split panes are in the main window only. Ctrl+Tab does nothing in a detached window. Dialogs started by scripts appear in the main window. Detached windows are not restored after a restart (all tabs come back docked).
- RDP: logging in to real Windows servers has been tried from Linux and Windows; the clipboard and resizing were checked in detail only against an in-process test server. NLA uses NTLM only: no Kerberos, smart card, RD Gateway or server redirection. Keyboard input is fast-path only (servers that refuse it, such as VirtualBox VRDP, will not work). No sound, drive, printer or USB redirection, no multi-monitor, no GFX pipeline. The clipboard is plain text; local copies are picked up within about 1.5 s or at once on Ctrl+V. Keys are sent by physical position, so the remote keyboard layout should match; AltGr combinations can differ; the Windows key is sent with its button. A fixed-size desktop is only scaled down, never up. FreeRDP and mstsc (the "system RDP program" option) were not run here. Settings files with RDP sessions do not load in older Saltbush versions, which matters when syncing with an older install.

- The built-in SSH engine hands sessions to the OpenSSH client only for `-o` options it does not handle (it names the option in the terminal), `UserKnownHostsFile=none`, and on Windows for agent forwarding and ServerAliveCountMax (the Windows libssh has no keepalive answers). StrictHostKeyChecking=no does not accept a changed host key. Keepalive answers are detected by timing. Jump hosts use their own user name (`user@`, `~/.ssh/config` or your local user) but the session's keys; a proxy command applies to the first hop only. Jump hosts, Ed25519 certificates and FIPS mode were tested on Linux only.
- FIPS mode limits SSH algorithms to FIPS-approved ones; Saltbush itself is not a FIPS 140 validated module.
- Smartcards and tokens are used through the SSH agent (Tools → SSH Agent → Smartcard), not directly by the built-in engine. Tested with SoftHSM, not with a physical card.
- Kerberos (GSSAPI) logins use the system libssh's GSSAPI support (Linux). They were not tested against a real Kerberos realm. The Windows build has no GSSAPI.
- Copy Public Key to Server needs a Unix-like shell (`sh`) on the server: it does not work with Windows OpenSSH servers, which keep keys elsewhere (`administrators_authorized_keys` for administrators). It writes to `~/.ssh/authorized_keys`; if the server's `AuthorizedKeysFile` points somewhere else, the check at the end reports that the key login failed. The check logs in with the private key next to the chosen `.pub` file (or the agent's keys when there is none). Like the SFTP browser, it does not open sessions that need the OpenSSH client.
- SFTP browser: resuming trusts the partial file when it is no longer than the original and was written after the original last changed; it does not compare contents, so a different file of the same name with an older date could be continued wrongly (delete the `.part` file to start again). Permissions are set on the selected items only, not on everything inside a folder, and the owner and group cannot be changed. Deleting on this computer is permanent (no recycle bin). The browser does not open sessions that need the OpenSSH client (jump hosts, extra `-o` options).
- Scripting follows Lantern Terminal's interface; members of the larger automation contract that Lantern does not implement (printing, window state, locking) are not provided either.
- Terminal emulation: no ANSI music, ISO protected areas (SPA/EPA) or DECSERA, and replies are always 7-bit (no S8C1T). Double-width and double-height lines use the scaled outline font (slightly soft) and ignore left/right margins; DECCOLM is always allowed and keeps the row count. Sixel: the aspect-ratio parameter is ignored, redefining a colour does not recolour pixels already drawn, writing over part of an image removes it from that whole row, there are no pixel-size queries, and images are limited to 4096x4096 (256 images, 20 million pixels per screen). In UTF-8, C1 code points inside strings are not treated as controls. Wyse 60 and SCO ANSI cover the common control codes, not every mode of the real terminals.
- Xmodem carries no file size, so trailing ^Z padding is removed from received files. Kermit has no sliding windows, streaming, server mode or text (X) packets. YMODEM-G is not supported.
- Linux serial drivers do not support 1.5 stop bits; that choice is refused when connecting. Serial was tested with a pseudo-terminal, not with real hardware.
- On Windows: serial ports cannot use mark or space parity; RLogin does not send window-size updates. The Windows build was tested under Wine and partly on Windows Server 2022 (see the OpenGL note).
- Credential passwords need `secret-tool` (libsecret-tools) and a running password store (KDE Wallet or GNOME Keyring). Without it, credentials keep only the user name.
- BBS Directory: lists are downloaded with `curl` (like updates), only from http:// and https:// addresses, up to 8 MB each. Only Telnet, RLogin, SSH and raw TCP entries are read from a list (no modem, serial or shell entries), and list passwords are not used. BBSes in different lists are matched by connection type, address and port, so the same BBS under a different port is listed twice. It has been tried on a Linux desktop (1.9.0); downloading the lists on Windows (with Windows' own curl.exe) has not been tried yet.
- Updates need `curl` (included with Windows 10 and later and most Linux systems) and, for the Debian package, `pkexec` (polkit) with a graphical password agent. Without them, use the download page. Updating the Debian package from 1.5.0 to 1.6.0 was tested on a real KDE Plasma desktop (password prompt, install, restart). Updating through the Windows installer has not been tested yet. Versions before 1.5.0 have no update check and must be updated by hand once.
- A new scrollback length takes effect from the next connection.
- The Escape key cannot be recorded in the key-mapping table (it cancels), and a key named "+" cannot be written in the Key+Key format.
- Function keys: most desktops keep Alt+F4 (and some other Alt+Fn or Ctrl+Alt+Fn keys) for themselves, so those never reach Saltbush. Shift and Ctrl with a function key send the same code as the plain key. While a dialog is open, only F11 works (and all keys in the Find window).
- Window state after an update: Wayland does not let programs read or set the window position or tell whether a window is minimised, so there only the size and maximised state are restored.
- Sync: the newest change wins for a whole session (fields are not merged), it relies on roughly correct clocks, a computer offline for more than 90 days can bring deleted items back, and passwords and computer-specific settings (local shell, serial port, key and certificate files, known_hosts, proxy command, pre-connect, logon script, log and transfer folders) must be set on each computer. Sync runs when settings are saved, so a slow network share can pause saving briefly. Anyone who can write to the sync folder can change your sessions, including SSH options, so use a folder only you control.
- macOS: the code type-checks for macOS and a build script is included, but it has not been built, linked or run on a Mac (Keychain, serial ports, keyboard shortcuts and the OpenGL renderer are untested there).
- Saltbush needs OpenGL 2.0 or later. On computers or virtual machines without graphics drivers (for example Windows Server with the Microsoft Basic Display Adapter, as tested) the window cannot open ("egui_glow requires opengl 2.0+"); the Lua runner still works there.
- Tested with automated tests and a virtual X display. The built-in SSH engine was tested against a private OpenSSH server: key, certificate and agent logins, host-key prompts, a changed host key, commands, resizing, local forwards, agent forwarding, trusted and untrusted X11 forwarding (to a virtual X server) and compression. The SFTP browser was tested against the same server (upload and download of files and folders, resumed uploads and downloads, rename, new folder, delete, permissions, kept modification times) and in the window on a virtual display. Transfers were tested against lrzsz (sx, rx, sb, rb), gkermit and C-Kermit. Also tested: jump hosts (two hops) and the SFTP browser through a jump host, mapped `-o` options, FIPS mode, Ed25519 certificates, remote and SOCKS4a/5 forwards, and password and keyboard-interactive logins (against a small test server). A real BBS (Synchronet, Telnet as a BBS session) showed its login screen correctly. On Windows Server 2022 the program loads and the Lua runner works, but the window needs OpenGL 2.0 (see above). Not tested here: Kerberos against a real realm, real serial hardware, Wayland without XWayland and the Windows paths of jump hosts, Ed25519 certificates and FIPS mode.
