What's new in MLC Terminal
Written for people using the app. What the app does is on the product page.
1.92.832026-10-05
- The file browser tab is now labelled in your language.
1.92.822026-10-05
- Right-click a folder in the file browser and choose New File: the empty file is created and opens in the editor. A name that is already there is refused instead of being overwritten.
- Better colours for TSX/JSX, SCSS, Sass, Less, Vue and Svelte, and highlighting for C#, Elixir, PowerShell, Groovy/Jenkinsfile, nginx, Jinja templates, NSIS scripts and RPM spec files.
- Importing a host list keeps nested groups nested. In the free version the preview now says how many of the new hosts will be added, and anything that fails is explained in your language.
1.92.812026-09-28
- Refresh on a folder in the file browser now also reloads the subfolders you have open below it — they no longer keep showing what was there before.
1.92.802026-09-28
- After disconnecting, a host's overview shows when it was last connected — a new host no longer claims it has never been connected.
- A newly added host now opens its overview straight away. The host-key dialog has one check command for every server, with a copy button. Rejecting a key says so in the tab and offers to try again.
- Monitoring-helper updates now reach Linux servers reliably, even while the old helper is busy taking a reading.
- Clickable file names and links — `ls --hyperlink` and anything else that prints OSC 8 links — now work in protected tabs too, not only in plain ones. Reopen a protected tab once after updating.
- A shell inside a container now shows its prompt straight away. If the image has no bash, you see it switch to sh instead of typing into an empty box. The shell that worked is remembered per container, and the shell field takes any command — "/bin/busybox sh" for instance.
- Status lines the app writes into a terminal — "connecting shell", the fallback notice, the greeting — now follow the app's language.
- The tunnel badge in the host list turns amber when a tunnel's target on the server does not answer, and the tunnel list says which one. It turns back as soon as the service is running again.
- Opening a tunnel to a target that is already forwarded now reuses the existing one instead of adding a second on the next port. Duplicates from earlier versions are cleaned up on the next connect, and the tunnel window lists every tunnel of the host, not just one tab's.
- If the same server is in your list twice, a protected session you have open under one entry now shows as "open in …" under the other, instead of "attached elsewhere". Ending it from there warns that it is your own tab.
- On first start, MLC Terminal now explains that it connects to servers over SSH and offers a button to add the first one.
- When you connect to a server for the first time, the fingerprint shown is now the same one `ssh-keygen` and `ssh` print, so you can actually compare it. The dialog also says which command to run on the server. Servers you already trust stay trusted.
- This release is built with the current Go security fixes, which the two previous releases were missing. The monitoring helper on your servers is replaced automatically the next time you connect.
1.92.692026-09-26
- The what's new dialog now opens the release notes in your language. German and Bavarian get the German page.
1.92.682026-09-26
This release fixes something that hit everyone working without protected sessions: Ctrl+D ended the shell and the app reconnected immediately. If you use tmux tabs you never saw it — which is why it stayed unnoticed for so long. Updating is recommended.
- Pressing Ctrl+D ends the shell. The tab reconnected on the spot, undoing what the user had just done. The app had no way to tell a deliberate end from a dropped link on a plain shell: it threw away the one signal that says which.
- Clicking Add in the tunnel panel did nothing and said nothing. It was reporting the failure correctly the whole time — but `ToastStack`, the component that shows notices, was rendered only in the main window. The host-settings, settings, monitor and host-area windows each run in their own WebView, so their notices went into a store nobody displayed.
- After an automatic reconnect the tunnels are restored onto the session that came back. A link clicked in a sibling tab of the same host looked at its own session, found nothing, and offered to forward a port that was already forwarded.
- Changing a host's address kept everything a scan had found on the previous one — OS, kernel, tmux, machine-id. Worse than being wrong, it counted as *known*, which is what stops the app offering to look again.
- After restarting a server the protected sessions were gone, as expected — but the tab looked exactly like the one that had been left behind. The remote printed a line saying a fresh session had been started; it scrolled past in the middle of the reconnect and nothing in the app knew it had happened.
- Pressing the refresh button on a working host could hide tmux and SFTP. The cause was not the scan touching the live session: a probe that could not answer wrote its silence into the host record, and the UI reads anything other than "yes" as "this host does not have it". Silence no longer overwrites what was known.
- Creating a tunnel reported success as soon as the *local* listener bound — which says nothing about the far end. On a server whose sshd has `AllowTcpForwarding no`, the browser pointed at that port then said "connection reset" and nothing anywhere named the cause. The refusal is now detected before a port is taken, and reported (`SSH_013`).
1.92.652026-09-23
- The Bavarian locale code "bv" is ours; BCP 47 sees a valid two-letter subtag, finds no data for it and silently falls back to the runtime default, which in a WebView is en-US. So dates came out month-first and clocks with AM/PM. Every locale now maps to a tag `Intl` can actually place.
- Clicking the settings button while the settings window sat behind others did nothing. Focus() is a request the window manager may refuse — and refuses precisely here, because the click happened in another window.
- Each row cost two and a half lines, so a handful of sessions filled the panel. Attach and kill are icons with tooltips now; the labels they used to show are the accessible names.
- Before a session exists nothing has been asked of the remote, so "Docker not available here" was a claim about a machine the app had not spoken to — and the badge went green the moment the user connected. Its neighbours in the same row, Files and Monitoring, have always said "connect first" in that state. Docker now does too.
1.92.642026-09-23
- The Protected Sessions panel lists sessions living on the remote machine, including those another running copy of the app is using. "Restore all" pulled those into this window — detaching whoever was in them — and "Kill on server" ended work nobody here had started. Sessions this installation created are now marked as such; bulk restore takes only its own, taking over a session somebody is attached to asks first, and killing one says who else is in it.
- The Docker badge was greyed out with a generic "not available" tooltip. The probe knows the difference between "no socket anywhere on the host" and "the socket is there and this account may not use it" - but the only screen that said so was the Docker view, which cannot be opened while Docker is unavailable. The reason is now in the badge's tooltip.
- The host scan opens its own connection from the stored record, so on a host that saves no password it had nothing to authenticate with until the user had connected once. It failed with an authentication error that read as the server rejecting them. It now asks for the password, the same way connecting does.
- Clicking "Getting started" under WSL produced an error naming an internal detail, and the link did nothing. Links now go through the openers that exist on the system — under WSL into the Windows browser.
1.92.632026-09-23
- 1.92.62 wrote the key only to the administrators file for accounts in that group. Whether sshd reads it depends on the server's own configuration — on a machine where that rule is commented out, the key landed where nobody looks. It now goes into both files.
1.92.622026-09-23
- Installing the app key on a remote host appended it without checking that the file ended in a newline. Where it did not, the new key was glued onto the previous line, and **both** stopped working — including a key somebody else was relying on. Found on a real Windows machine.
1.92.612026-09-23
- With the error finally visible it said "bmp: unsupported BMP image". The library used for decoding refuses exactly what the Windows clipboard hands out, so the bitmap is now read directly.
1.92.602026-09-23
- Pasting an image still failed on Windows, reported as "empty clipboard". Two mistakes: the clipboard calls could land on different OS threads, and the error from the backend was being swallowed in the frontend.
1.92.592026-09-23
- Pasting an image did nothing on Windows. It could not have worked: Wails disables the WebView's accelerator keys there, so Ctrl+V never arrives as a paste event, which is what the first attempt listened for. The clipboard is now read on the Go side instead.
1.92.582026-09-23
- Pasting a screenshot did nothing on Windows: the clipboard carries an empty `text/plain` alongside the image, and that was taken for a text paste. What counts now is whether there is actual text.
1.92.572026-09-23
- Assistants that run in a terminal — Claude Code, Antigravity and the like — read images from a path. Over SSH the clipboard is here and the assistant is there. Pasting an image now offers to copy it to `~/.mlcterm/pastes/` and inserts the path it got.
1.92.562026-09-22
- Disconnecting and reconnecting brought the tunnels back, but quitting the app and starting it again did not. They are written down per host now, so a restart restores them too.
- The tunnel marker now comes before the auto-connect one, and the "AUTO" label is a small lightning bolt — the word took up room the row does not have.
1.92.552026-09-22
- The tunnel marker from 1.92.54 sat in the row's action area, which only appears when the mouse is over the host. It is now always visible.
- Clicking a `localhost` link asked what to do even when a tunnel for exactly that address was already open. It now opens straight away.
1.92.542026-09-22
- Restoring tunnels after a reconnect did nothing: the list stayed empty. The cause was older than that feature — a dropped connection left its local listener bound, so the port the tunnel needed back was held by the tunnel that used to serve it.
- A host with open tunnels now shows a button with the count next to it in the host list; clicking it opens that host's tunnel list.
1.92.532026-09-22
- Tunnels died with the connection: the shell came back by itself, the forwards did not, and the first sign was a dead browser tab. A host can now be told to re-open its tunnels after an automatic reconnect. Off by default, per host, in the Features tab.
1.92.522026-09-22
- A file opened in the browser can now be dragged onto a pane — the centre drops it in, an edge splits and places it there — or onto the tab strip. From then on it behaves like any other pane: movable, splittable, saved with the layout, and editable. While a file has unsaved changes, dragging is blocked; save first.
1.92.512026-09-22
- Syntax highlighting looked flat next to an editor. The viewer now gives types, properties, functions, numbers and the different kinds of keyword their own colours: TypeScript went from 7 colours to 10, Go from 6 to 9, Python from 7 to 10. Shell stays at 7 — there the parser, not the palette, is the limit.
1.92.502026-09-22
- In 1.92.49 Ctrl+S left the file marked as modified and saved nothing. It works now.
- Syntax highlighting looked flat next to a code editor. Go files now use a real grammar, so types and function names get colour too.
1.92.492026-09-22
- The font size control scaled the toolbar buttons along with the text, so at a large size the bar ate half the viewer. The slider now changes the file's text only.
- Everyone presses Ctrl+S to save; in the file editor nothing happened and saving only worked from the button. Ctrl+S (and Cmd+S) now saves.
- A `VERSION` file holding a few bytes of text was reported as binary and not shown at all. Extensionless text files now open in the code viewer.
- The working directory shown under the shell is used constantly: select it, switch to the shell, type `cd`, paste. A click on it now copies the full path.
1.92.482026-09-14
- After closing a workspace or disconnecting, the banner "4 protected sessions are running here with no open tab" stayed on a host that was no longer connected — where "Show" could not restore anything. It now appears only while the host is connected.
1.92.472026-09-14
- Closing a workspace removed it entirely: with no other host open the window showed only "pick a host", and with others open it switched to a different host without saying so. It now lands on the closed host's Overview, disconnected.
- Disconnecting a host saved its layout and then, three seconds later, replaced that save with the Overview and Notes left on screen, so the next connect had nothing to restore. A workspace without a shell is no longer saved as the last session.
1.92.462026-09-14
- Opening an SVG in the file viewer showed a broken-image icon instead of the picture. The source view had been fixed in 1.92.45; the preview beside it had never worked.
1.92.452026-09-14
- The source view of an SVG showed `PHN2ZyB4bWxucz0i…` instead of the XML. The file on the server was fine; what was wrong was the view, and saving from it would have written that text over the file.
- The close-workspace warning appeared whenever the host was connected — also with only the Overview and a monitor open, and for protected shells, which a close only detaches. It now asks only when a plain shell would end or a file has unsaved changes, and lists exactly those.
- Restoring a workspace waits for each shell to connect and holds its clock while a passphrase or host-key dialog is open. A check that woke up late could still give up with the dialog on screen, and the shell then came up in `$HOME` without its startup command. It no longer can.
1.92.442026-09-14
- Closing a workspace listed the terminals about to be cut off as "ubuntu server", four times over, while the tab bar right above read "mlc", "mlc_mcptester" and "localembed". The warning now names each shell exactly as the tab bar does.
1.92.432026-09-13
- Creating a host offered only "none" and "New group…" in the group picker; the groups that already existed appeared only when editing a host.
1.92.422026-09-13
- On a small dashboard card of a disconnected host the name was cut down to "b.", "m.", "n.". The card's hidden layout buttons no longer take up room in the header.
1.92.412026-09-13
- The dashboard window labelled monitored hosts "monitoring enabled — not started" while their poller was running. It now asks the backend, says "first reading on its way" while it waits, and says "not started" only when that is true.
1.92.402026-09-12
- Saving an edited file wrote it correctly, but switching back to the rendered view showed the text from before the save — and so did clicking the same file in the tree again.
1.92.392026-09-12
- Activating a licence in the Settings window left the main window showing the old tier — Docker locked, monitoring gated, the host cap still at three — until the app was restarted.
1.92.382026-09-12
- The registration page treated "unregistered and not evaluating" as one state. It is two — and the second one, a licence that ran out on an installation that never evaluated, was told its trial was over while the licence it actually lost went unmentioned.
1.92.372026-09-12
- A licence that ran out handed the installation a fresh 30-day evaluation — Docker, monitoring and unlimited hosts — while the banner on the same screen said the free tier had none of it. An expired licence may now let an evaluation already under way continue, but it may not start one.
1.92.362026-09-08
- The overview line read "last updated <relative>" — the mtime of the address-book record, not a connection fact. It now reads "Connected since 13:02 · 2h 14m" while a session is live, and "last connected" when none is.
- The host icon vanished as soon as the overview page had enough below it to scroll — on a host with a single tmux session, nothing of it was left.
1.92.352026-09-08
- Host groups can now be created and assigned in the connection dialog — until now the sidebar could show them but nothing could make one.
- The terminal now starts with the configured colour scheme instead of the dark default.
1.92.302026-09-07
- Two file browsers on the same host no longer knock each other out — closing one leaves the other working.
1.92.292026-09-07
- The post-quantum indicator can be switched off — it is noise for most people.
1.92.282026-09-07
- Arch Linux gets a proper package — `sudo pacman -U mlcterm.pkg.tar.zst` pulls the libraries it needs along with it.
- The terminal cap can now be set once for every host, not only per host.
- Sort the host list by last used, name or when it was added — and drag the sidebar wider on a big screen.
- A report of which host was connected, when, and for how long — switchable, and part of the Pro licence.
- Export the host list to a file and import it on another machine — names, colours, addresses and everything the scan found. No credentials.
- How do I get bash instead of cmd when connecting to Windows?
- Changing a connection's colour now takes effect immediately.
1.92.272026-09-06
- Trusting a host key now works on hosts that do not listen on port 22.
- Exporting the application's SSH key now saves both halves, so the exported key can be picked as a key file straight away.
- The key the application creates for itself can be chosen as a host's key file without exporting it first.
- The plain Linux binary needs `libwebkit2gtk-4.1` on the system — the package names per distribution are now written down.
1.92.262026-09-06
- Drop a file on a terminal and it offers to upload it to the directory that shell is standing in.
- The quick start was always there, on the website and in six languages. Nothing in the window pointed at it.
1.92.202026-09-06
- An empty clipboard and a failed read looked identical from outside: no paste, no word. Now the badge says which.
- One gesture used to produce two things — tmux's menu while the button was held, and a paste on release. Now it is tmux's menu, and only that.
- The highlight after copying was a leftover from a second, invisible selection — and it lied: nothing was selected any more, so the next Ctrl+C went to the shell as SIGINT.
- On Windows the key did nothing, and the paste *after* it came out mangled. Both had the same cause.
- A screenshot of a copy/paste problem now carries the setting — and says whether it applies at all.
- A copy was silent in both directions — it worked and said nothing, it failed and said nothing. A short badge now confirms it, and a failure says so instead of vanishing.
- It had been broken since v1.78.0 and came up as an empty window. Files, notes and monitoring can still be popped out.
1.92.142026-09-05
- Rootless Docker and Docker Desktop were simply unreachable: two paths were tried and neither is where those put their socket. The app now asks the host where it is. And a socket you are not allowed to use says so, instead of "daemon not reachable".
- Some servers never offer the SSH method literally called "password" — Windows OpenSSH routes it through keyboard-interactive, and so does any host with PAM configured that way. The password is now offered over both.
1.92.132026-09-05
- With the tmux mouse on, the copy/paste mode does not apply inside protected sessions — tmux takes the mouse there. True before, and now stated where you set either of the two.
1.92.122026-09-05
- Every published port appeared twice, the status was cut off exactly where the health was, and the numbers stacked two lines high. All three are fixed.
- Theme, font size and the mouse/clipboard mode used to sit under "Limits", where nobody looked for them. They have their own tab now.
- Installing the key appended it to `authorized_keys` and stopped there. The next connect still used the password, and the banner offering the install came back. The host is now switched over — after the server has been asked whether it actually accepts the key.
- A Windows box and a Linux server want different mouse behaviour. The mode now lives on the connection, and the global setting is what a host falls back to.
- macOS asks once whether MLC Terminal may reach devices on your local network. Dismiss that prompt and every connection to a LAN address fails silently. It now says so, and where to switch it back on.
- A host set to password authentication with nothing stored used to fail with an error that named no cause. Now it asks — once per app run, and the answer is never written to disk.
- The `.dmg` opens on a double-click, with no warning and no detour through System Settings.
- The icon has lost its coloured window dots, and the start screen no longer shows other platforms' logos.
- When a server's identity changes you see both fingerprints side by side and decide for yourself — instead of a technical message that offers no way forward.
- Expand the raw error and take as long as you like — the notice stays until you let go of it.
- In the dark theme it was there but effectively invisible.
1.92.42026-09-02
- Whenever you register, your free year is a full year.
1.92.22026-09-02
- If your settings file is damaged MLC Terminal still starts, tells you why, and your hosts are kept.
1.92.12026-09-02
- You are told in good time that your licence is running out — and once it has, why Docker and monitoring disappeared.
- If you replace your key while the old one is still valid, you are reminded to write it down first.
1.92.02026-09-02
- A freshly set up host offers protected shells as soon as the connection is up.
- Notifications from your scripts now appear in the store edition too.
1.91.12026-09-01
- On a freshly installed Windows the app now starts on the first attempt.
- A backup of your key lands where you would look for it — not among the configuration files by accident.
1.91.02026-09-01
- You can try the whole thing before deciding anything, and nothing you set up during the trial is taken away — only the Pro features stop.
- The viewer now tells you "Permission denied", which file it means, and that system logs under `/var/log` usually belong to root or the `adm` group — with what to do about it.
1.90.02026-09-01
- Two windows on two different hosts no longer overwrite each other's tab layouts.
1.89.02026-09-01
- Open a .log file and watch it fill up, however large it is.
1.84.02026-08-28
- The file browser comes back the way you left it — same root, same folders open, same files in the preview.
- Docker shells, container logs and opened documents are still there after reconnecting.
- "Select all" and "Copy all" in the file toolbar, and Ctrl+A does what you expect.
1.83.12026-08-27
- Hosts set to connect at startup now say so in the sidebar.
1.83.02026-08-27
- The font size you set on a terminal, a preview or the notes pane is restored with the layout.
1.82.52026-08-27
- The terminal limit explains what 0 means, and 0 can be typed again to go back to the default.
1.82.42026-08-27
- An empty pane now has its own button to open a shell in it — and says why, when it cannot.
1.82.32026-08-27
- Command markers disappear while vim, less or htop is running, and come back when you leave.
1.82.22026-08-27
- Closing a container shell no longer reports that the image has no shell.
1.82.12026-08-27
- Installing the shell integration, reading tmux state and installing the app key now work on a host with a lot of tabs open.
1.82.02026-08-27
- No visible change; the Docker integration is now tested against a real daemon rather than only in theory.
- When Docker cannot be reached, MLC Terminal now says what to check on the server instead of only "connect failed".
1.81.22026-08-27
- If the encryption key cannot be read, MLC Terminal now says so instead of quietly replacing it.
1.81.12026-08-27
- The monitor shows your disks, not Docker's temporary mount points.
1.81.02026-08-27
- No visible change — internal work so that gated features cannot be added without a licence check.
1.80.02026-08-27
- Pro features are now enforced where the work happens, not only where the tab is opened.
1.79.32026-08-27
- The footer of every terminal shows whether the shell integration is actually working in that pane.
1.79.22026-08-26
- Terminal settings now take effect straight away, both when switching them on and when switching them off.
1.79.12026-08-26
- New tabs are clean again. For the directory to be remembered, install the shell integration on that host — once, from Host settings.
1.79.02026-08-26
- Host settings → Shell integration → Install. Nothing to paste, nothing to edit by hand.
- Command markers and exit-code colouring now work on zsh hosts, not just bash.
- Reopen a tab and it comes back in the directory you left it in — no setup on the server.
1.78.12026-08-26
- Working in two windows at once no longer risks losing hosts or passwords saved in the other one.
- File-browser bookmarks and the folder you had open are still there after a restart.
- Hosts entered as an IPv6 address connect.
1.78.02026-08-26
- Any pane can now be maximised — notes, files and previews too, not just terminals.
- Notes and file previews have a text-size slider, like the terminal.
- A container shell shows its size and has its own text-size slider.
- The Docker list marks containers that have a shell or logs open, and the button takes you back to them.
- After an update the app points at a short, plain list of what changed.
- A shell or log view opened from Docker is now an ordinary tab: it keeps running while you work elsewhere, several can be open at once, and they can be moved between panes.
- Dragging a container shell into another pane keeps it running, with its output and the shell you chose.
- A container without bash or sh says so instead of showing an empty terminal.
- The refresh button looks like a refresh button.
- Container logs no longer show stray boxes where control characters were.
1.77.02026-08-25
- Error messages no longer pile up invisibly: several are shown at once, identical ones are counted rather than repeated, most clear themselves after a few seconds, and the last twenty stay readable behind the bell in the title bar.
- A pane in a split can be maximised with the button beside the font-size slider, and put back with a second click.
1.76.12026-08-25
- Editing a file in the preview works again — including markdown and HTML, which used to jump back to the rendered view.
- The Windows and macOS builds report the version they actually are.
- A tab that lost its connection reconnects by itself once the network is back, instead of giving up after ninety seconds.