Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
4fb9185
fix: keep the default look out of the first run plugin picker
LukeGus Nov 2, 2026
f5895f1
chore: update translations and plugin pins
LukeGus Nov 3, 2026
78a1e90
chore: update wake-on-lan readme description
LukeGus Nov 4, 2026
037b032
chore: use the new wake-on-lan description in the readme
LukeGus Nov 4, 2026
3ab3022
fix: stop alerts with no icon squeezing text to one word per line
LukeGus Nov 4, 2026
a2aafc1
chore: add wireguard to the readme plugin table
LukeGus Nov 4, 2026
80612c3
fix: match password field height to other inputs
LukeGus Nov 4, 2026
31df4b1
fix: drop the empty security step when no sign in plugin offers setup
LukeGus Nov 4, 2026
b9df36b
feat: rework default plugins and keep unchosen plugins off in the fir…
LukeGus Nov 4, 2026
b87fe3c
chore: rename vault to ssh certificate signer in the readme
LukeGus Nov 4, 2026
cc725c7
feat: add the operations layer for declared plugin actions
LukeGus Nov 4, 2026
631f6ac
feat: add host sections, tab embeds and the operations client to the …
LukeGus Nov 4, 2026
3ae56a9
chore: bump the plugin sdk to 1.0.24
LukeGus Nov 4, 2026
b7f749c
feat: let a host click open the host page
LukeGus Nov 4, 2026
4465969
chore: add operations center to the plugin table
LukeGus Nov 4, 2026
03029cd
feat: let a request approved in a plugin run by permissions
LukeGus Nov 4, 2026
2e79bf9
feat: limit api keys to actions when they are made
LukeGus Nov 4, 2026
1c4fa52
fix: remove plugin updates the bundled copy caught up with
LukeGus Nov 4, 2026
9613b78
feat: shared tile grid for plugin pages and many-tile dashboard cards…
LukeGus Nov 4, 2026
c7aa1c6
feat: new bundled plugins start on only if recommended, fetch missing…
LukeGus Nov 4, 2026
ea4e2d2
fix: remove the partial file when a desktop download is aborted early
LukeGus Nov 4, 2026
09e04d0
fix: stop the jump host pipeline test failing under load
LukeGus Nov 4, 2026
1867be3
fix: keep line chart time labels from overlapping
LukeGus Nov 4, 2026
19bdd58
feat: shared tile look for cards and pages, plus new page pieces in S…
LukeGus Nov 5, 2026
4aead47
fix: save every ui pref key changed in one burst so dashboard reset s…
LukeGus Nov 5, 2026
2ee31ac
fix: honor signal refreshSec when caching signal reads
LukeGus Nov 5, 2026
a2308c9
fix: plugin page clipping and badges, match select and textarea sizes
LukeGus Nov 5, 2026
a91339f
fix: widen chart axis labels to fit long units
LukeGus Nov 5, 2026
18e7f56
fix: match select and segmented heights to inputs
LukeGus Nov 5, 2026
a73782e
chore: add backups plugin to readme
LukeGus Nov 5, 2026
57eb7fa
chore: add cron, users, packages and certificates to the plugin table
LukeGus Nov 5, 2026
6c265c4
chore: add ping to the docker image
LukeGus Nov 5, 2026
041e10e
chore: add uptime to the plugin table
LukeGus Nov 5, 2026
c09d09f
fix: test
LukeGus Nov 5, 2026
d0ef505
chore: add web servers plugin to readme
LukeGus Nov 5, 2026
db5d4f4
docs: add process manager to plugin table
LukeGus Nov 5, 2026
49b6dd6
docs: add virtual machines to plugin table
LukeGus Nov 5, 2026
3824203
docs: add UPS Manager to the plugin table
LukeGus Nov 5, 2026
3586646
chore: add network devices to plugin table
LukeGus Nov 5, 2026
7e308fe
docs: add Ansible to the plugin table
LukeGus Nov 5, 2026
741c211
fix: remove duplicate Network Devices row
LukeGus Nov 5, 2026
13ca436
docs: add the Git plugin to the plugin table
LukeGus Nov 5, 2026
5280928
docs: add Notes to the plugin table
LukeGus Nov 5, 2026
c28cda7
fix: keep bottom line on tile grids that have content below
LukeGus Nov 5, 2026
081c8b6
docs: add out-of-band plugin to readme
LukeGus Nov 5, 2026
b2d1528
chore: add storage health to the plugin list
LukeGus Nov 5, 2026
d451628
chore: add object storage plugin to readme
LukeGus Nov 6, 2026
87d5777
docs: add IP-KVM to plugin list
LukeGus Nov 6, 2026
fd3eeea
docs: add log search to the plugin table
LukeGus Nov 6, 2026
1f5a19f
chore: add security center to the plugin list
LukeGus Nov 6, 2026
67b70f8
feat: connect policy hook so plugins can require approved access
LukeGus Nov 6, 2026
789d270
fix: ship the connect policy in sdk 1.1.1 and add privileged access t…
LukeGus Nov 6, 2026
a055291
chore: update translations and plugin pins
LukeGus Nov 6, 2026
30db4f8
feat: native drag of files out of the desktop app
LukeGus Nov 6, 2026
3c62296
feat: publish Flatpak to our own signed repo on each release
LukeGus Nov 6, 2026
020f305
feat: shared toolbar, footer and host dot pieces for plugin UI
LukeGus Nov 6, 2026
33cbd77
fix: add spacing around trailing buttons in tab strip
LukeGus Nov 6, 2026
25fd8d0
feat: plugin list rows use host list status colors
LukeGus Nov 6, 2026
950e539
docs: list default image plugins first, the rest in a dropdown
LukeGus Nov 7, 2026
76d41a2
chore: tier map for plugins that are not pinned yet
LukeGus Nov 7, 2026
191d5b2
fix: hide empty tile stack sections so closed editors add no lines
LukeGus Nov 7, 2026
cd81203
fix: tile lines no longer overlap section lines, tab row button group…
LukeGus Nov 7, 2026
f3e0c0e
fix: one border color for controls, small button icons snap to whole …
LukeGus Nov 7, 2026
17e57c9
fix: format bundled plugin pins with prettier
LukeGus Nov 7, 2026
11b3811
fix: send credentials with the web app manifest request (#1766)
0skater0 Nov 7, 2026
4fe23b5
fix: restore the hosts import/export button label (#1767)
0skater0 Nov 7, 2026
1173f3f
fix: prefer AES-128-GCM for efficient SSH group exchange (#1776)
ZacharyZcR Nov 7, 2026
3630d6c
fix: expose host editing through the plugin shell bridge (#1778)
ZacharyZcR Nov 7, 2026
803a52c
feat: add macOS menu bar icon options (#1779)
ZacharyZcR Nov 7, 2026
9778b6e
fix(build): ship the arm64 and armv7l sharp binaries in the Linux bui…
pcbeingused333 Nov 7, 2026
b912a31
feat: add Cmd-B sidebar toggle shortcut (#1775)
ebayerjuho Nov 7, 2026
4584aff
feat: let plugins store a CA-signed certificate on a credential (#1764)
TheLord83 Nov 7, 2026
e033025
fix: only run shell keybinding defaults from the shell
LukeGus Nov 7, 2026
f3fae63
chore: changelog for merged PRs
LukeGus Nov 7, 2026
f0bd55e
fix: leave guest ticks out of the cpu total (Plugin-Host-Metrics#24)
LukeGus Nov 7, 2026
3b11a2a
fix: pass saved password flags to plugin hosts (Plugin-SSH-Terminal#57)
LukeGus Nov 7, 2026
25fef3a
fix: quit on close on GNOME (#1781)
LukeGus Nov 7, 2026
8f45e56
feat: keep the mouse back button from leaving Termix (#1770)
LukeGus Nov 7, 2026
88c49f6
feat: let plugin sync entities merge a row made on both sides (matchOn)
LukeGus Nov 7, 2026
bf6df66
feat: browser and mouse back move between used tabs (#1770)
LukeGus Nov 7, 2026
ced3e93
feat: admin switch to block saved logins, hash session tokens (#1753)
LukeGus Nov 7, 2026
fcca96c
feat: tell login method UIs which login page they are on
LukeGus Nov 7, 2026
c70655e
feat: let auth plugins link identities to existing accounts
LukeGus Nov 7, 2026
a307633
feat: let signed in users prove a second factor for connect rules
LukeGus Nov 7, 2026
40af8c3
feat: keep a shared host login on the desktop only (#1749)
LukeGus Nov 7, 2026
99460b5
fix: don't serve a cached read that started before a change (#1783)
Karanvir1729 Nov 7, 2026
89748a9
chore: changelog entry for #1782
LukeGus Nov 7, 2026
746b3a9
chore: sync lockfile with sdk version
LukeGus Nov 7, 2026
7c597b0
fix: never hand out an unreadable generated ssh key
LukeGus Nov 7, 2026
35a1514
fix: use page background for the add tiles panel
LukeGus Nov 7, 2026
f78cd2c
fix: remove half written plugin dist when a build fails
LukeGus Nov 7, 2026
fc4a7ca
fix: list the hosts each operation fits in the catalog
LukeGus Nov 7, 2026
0de3763
chore: name the entity in sync read warnings (Plugin-Sync#8)
LukeGus Nov 7, 2026
e85ac6d
fix: replace older shipped plugins from the linked server (#1785)
LukeGus Nov 7, 2026
1783dda
fix: show all companions on host page terminal
LukeGus Nov 8, 2026
e79b5d4
fix: side nav divider spans the full width
LukeGus Nov 8, 2026
1e35282
fix: use one fill and solid border for inputs, selects, tabs and menus
LukeGus Nov 8, 2026
aa634a3
fix: make inline views full width
LukeGus Nov 8, 2026
b62d2e8
fix: keep plugin ssh pools per user and refuse half signed in sessions
LukeGus Nov 8, 2026
3eb7d3b
feat: check setting permissions on every host settings write, add ena…
LukeGus Nov 8, 2026
44c57c5
fix: clean errors for empty bodies, bad ids on postgres and mysql, ha…
LukeGus Nov 8, 2026
b9e07f7
fix: shell, settings and accessibility fixes from the release test
LukeGus Nov 8, 2026
330fc9c
fix: keep host status checks in exports (#1787)
pcbeingused333 Nov 8, 2026
91f9308
chore: changelog for export status checks
LukeGus Nov 8, 2026
ecb3260
chore: update sdk ui export snapshot
LukeGus Nov 8, 2026
68842fa
chore: update translations and plugin pins
LukeGus Nov 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
86 changes: 2 additions & 84 deletions .github/workflows/electron.yml
Original file line number Diff line number Diff line change
Expand Up @@ -293,14 +293,15 @@ jobs:
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libfuse2 flatpak flatpak-builder imagemagick
sudo apt-get install -y libfuse2

- name: Install dependencies
run: |
npm ci
npm install --force @rollup/rollup-linux-x64-gnu
npm install --force @rollup/rollup-linux-arm64-gnu
npm install --force @rollup/rollup-linux-arm-gnueabihf
node scripts/install-linux-sharp.cjs

# Bundled plugins are counted as downloads in the plugin store, so a
# build only fetches them when the pins change.
Expand Down Expand Up @@ -426,89 +427,6 @@ jobs:
path: release/termix_linux_armv7l_portable.tar.gz
retention-days: 30

- name: Add Flathub repository
run: |
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

- name: Install Flatpak runtime and SDK
run: |
sudo flatpak install -y flathub org.freedesktop.Platform//24.08
sudo flatpak install -y flathub org.freedesktop.Sdk//24.08
sudo flatpak install -y flathub org.electronjs.Electron2.BaseApp//24.08

- name: Get version for Flatpak
id: flatpak-version
run: |
VERSION="${{ inputs.version_override }}"
if [ -z "$VERSION" ]; then
VERSION=$(node -p "require('./package.json').version")
fi
RELEASE_DATE=$(date +%Y-%m-%d)
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "release_date=$RELEASE_DATE" >> $GITHUB_OUTPUT

- name: Prepare Flatpak files
run: |
VERSION="${{ steps.flatpak-version.outputs.version }}"
RELEASE_DATE="${{ steps.flatpak-version.outputs.release_date }}"

CHECKSUM_X64=$(sha256sum "release/termix_linux_x64_appimage.AppImage" | awk '{print $1}')
CHECKSUM_ARM64=$(sha256sum "release/termix_linux_arm64_appimage.AppImage" | awk '{print $1}')

mkdir -p flatpak-build
cp packaging/flatpak/com.karmaa.termix.yml flatpak-build/
cp packaging/flatpak/com.karmaa.termix.desktop flatpak-build/
cp packaging/flatpak/com.karmaa.termix.metainfo.xml flatpak-build/
cp public/icon.svg flatpak-build/com.karmaa.termix.svg
convert public/icon.png -resize 256x256 flatpak-build/icon-256.png
convert public/icon.png -resize 128x128 flatpak-build/icon-128.png

cd flatpak-build
sed -i "s|https://github.com/Termix-SSH/Termix/releases/download/vVERSION_PLACEHOLDER/termix_linux_x64_appimage.AppImage|file://$(realpath ../release/termix_linux_x64_appimage.AppImage)|g" com.karmaa.termix.yml
sed -i "s|https://github.com/Termix-SSH/Termix/releases/download/vVERSION_PLACEHOLDER/termix_linux_arm64_appimage.AppImage|file://$(realpath ../release/termix_linux_arm64_appimage.AppImage)|g" com.karmaa.termix.yml
sed -i "s/CHECKSUM_X64_PLACEHOLDER/$CHECKSUM_X64/g" com.karmaa.termix.yml
sed -i "s/CHECKSUM_ARM64_PLACEHOLDER/$CHECKSUM_ARM64/g" com.karmaa.termix.yml
sed -i "s/VERSION_PLACEHOLDER/$VERSION/g" com.karmaa.termix.metainfo.xml
sed -i "s/DATE_PLACEHOLDER/$RELEASE_DATE/g" com.karmaa.termix.metainfo.xml

- name: Build Flatpak bundle
run: |
cd flatpak-build
flatpak-builder --repo=repo --force-clean --disable-rofiles-fuse build-dir com.karmaa.termix.yml

ARCH=$(uname -m)
if [ "$ARCH" = "x86_64" ]; then
FLATPAK_ARCH="x86_64"
elif [ "$ARCH" = "aarch64" ]; then
FLATPAK_ARCH="aarch64"
else
FLATPAK_ARCH="$ARCH"
fi

flatpak build-bundle repo ../release/termix_linux_flatpak.flatpak com.karmaa.termix --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo

- name: Create flatpakref file
run: |
VERSION="${{ steps.flatpak-version.outputs.version }}"
cp packaging/flatpak/com.karmaa.termix.flatpakref release/
sed -i "s|VERSION_PLACEHOLDER|v${VERSION}|g" release/com.karmaa.termix.flatpakref

- name: Upload Flatpak bundle
uses: actions/upload-artifact@v7
if: hashFiles('release/termix_linux_flatpak.flatpak') != '' && inputs.artifact_destination != 'none'
with:
name: termix_linux_flatpak
path: release/termix_linux_flatpak.flatpak
retention-days: 30

- name: Upload Flatpakref
uses: actions/upload-artifact@v7
if: hashFiles('release/com.karmaa.termix.flatpakref') != '' && inputs.artifact_destination != 'none'
with:
name: termix_linux_flatpakref
path: release/com.karmaa.termix.flatpakref
retention-days: 30

# Every official plugin, for installs without internet. No update files.
- name: Build Linux x64 full packages
if: inputs.artifact_destination != 'none'
Expand Down
112 changes: 112 additions & 0 deletions .github/workflows/flatpak.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
name: Publish Flatpak

# Builds the Flatpak from a release's portable tarballs and adds the bundles to
# that release. Stable releases also replace the repo at flatpak.termix.site,
# which is what `flatpak update` reads.

on:
workflow_dispatch:
inputs:
release_tag:
description: "Release tag to package, like v26.11.1"
required: true
type: string
publish:
description: "Replace the live Flatpak repo"
required: true
default: true
type: boolean
workflow_call:
inputs:
release_tag:
description: "Release tag to package"
required: true
type: string
publish:
description: "Replace the live Flatpak repo"
required: true
type: boolean

env:
FLATPAK_REPO_URL: https://flatpak.termix.site

jobs:
build:
runs-on: blacksmith-8vcpu-ubuntu-2404
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
ref: ${{ inputs.release_tag }}
fetch-depth: 1

# A tag from before this workflow has no build script.
- name: Use the newest packaging files
env:
WORKFLOW_SHA: ${{ github.sha }}
run: |
git fetch --depth 1 origin "$WORKFLOW_SHA"
git checkout "$WORKFLOW_SHA" -- packaging/flatpak

- name: Install tools
run: |
sudo add-apt-repository -y ppa:flatpak/stable
sudo apt-get update
sudo apt-get install -y flatpak flatpak-builder imagemagick qemu-user-static
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

- name: Download release tarballs
env:
GH_TOKEN: ${{ github.token }}
TAG: ${{ inputs.release_tag }}
run: |
gh release download "$TAG" --repo "$GITHUB_REPOSITORY" --dir tarballs \
--pattern termix_linux_x64_portable.tar.gz \
--pattern termix_linux_arm64_portable.tar.gz

- name: Import signing key
env:
FLATPAK_GPG_KEY: ${{ secrets.FLATPAK_GPG_KEY }}
run: |
export GNUPGHOME="$RUNNER_TEMP/gnupg"
mkdir -m 700 "$GNUPGHOME"
printf '%s' "$FLATPAK_GPG_KEY" | gpg --batch --import
echo "FLATPAK_GPG_HOME=$GNUPGHOME" >> "$GITHUB_ENV"
echo "FLATPAK_GPG_KEY_ID=$(gpg --list-keys --with-colons | awk -F: '/^fpr/ { print $10; exit }')" >> "$GITHUB_ENV"

- name: Build
env:
TAG: ${{ inputs.release_tag }}
run: |
bash packaging/flatpak/build-repo.sh "${TAG#v}" tarballs out
chmod -R a+rX out/site

- name: Add bundles to the release
env:
GH_TOKEN: ${{ github.token }}
TAG: ${{ inputs.release_tag }}
run: |
gh release upload "$TAG" out/*.flatpak out/com.karmaa.termix.flatpakref \
--repo "$GITHUB_REPOSITORY" --clobber

- name: Upload repo for Pages
if: inputs.publish
uses: actions/upload-pages-artifact@v5
with:
path: out/site

deploy:
needs: build
if: inputs.publish
runs-on: blacksmith-2vcpu-ubuntu-2404
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ env.FLATPAK_REPO_URL }}
steps:
- name: Deploy
uses: actions/deploy-pages@v5
13 changes: 13 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -543,6 +543,19 @@ jobs:
source_ref: ${{ needs.merge-to-main.outputs.build_ref || needs.translate.outputs.sha || needs.prep.outputs.sha }}
secrets: inherit

flatpak:
needs: [prep, electron-release]
if: ${{ always() && needs.electron-release.result == 'success' && needs.prep.outputs.mode != 'Dry run' }}
permissions:
contents: write
pages: write
id-token: write
uses: ./.github/workflows/flatpak.yml
with:
release_tag: ${{ needs.prep.outputs.release_tag }}
publish: ${{ needs.prep.outputs.channel == 'Stable' }}
secrets: inherit

electron-submit:
needs: [prep, merge-to-main, electron-release]
if: ${{ always() && needs.electron-release.result == 'success' && needs.prep.outputs.channel == 'Stable' && needs.prep.outputs.mode != 'Dry run' && needs.prep.outputs.mode != 'Skip submit' }}
Expand Down
89 changes: 89 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,94 @@
# Changelog

## 26.11.1

### Added

- Plugins in the desktop app can drag files out to Explorer or Finder
- Termix actions: plugins can declare what they do once, and it works from the API with permission checks, dry runs, run history and approvals
- API keys can be limited to reading or running actions, when an admin makes them
- A click on a host can open its host page, when a plugin offers one
- Plugins can build pages of tiles you drag and resize, and add many copies of one dashboard card, each with its own settings
- A plugin a newer release ships is downloaded on its own when your image does not have it, and tried again on the next start when offline
- Plugins can decide who may connect to a host, so a host can need approved access before an SSH or remote desktop session opens
- When more than one plugin flags a host, its row shows one status dot with every reason in its tooltip
- Plugins that issue SSH certificates can save them on the SSH key login they were issued for
- Cmd+B shows or hides the sidebar, and can be changed in keybindings
- The macOS menu bar icon can be monochrome (the default), in color or hidden, from the Termix menu
- Browser back and forward, and the mouse back and forward buttons, move between the tabs you used instead of leaving Termix
- Closing a tab goes back to the tab you used before it
- Admin setting to stop anyone saving passwords and keys on hosts and credentials. Termix asks for them when connecting (#1753)
- A signed in user can prove a second factor again, for plugins that ask before something sensitive
- Desktop app: a credential can be kept on this device only, and used as a personal login for a shared host or folder. It is never sent to the server (#1749)

### Changed

- Inputs, selects, tab groups and menus share one fill and one border color
- Plugin cards and pages use the dashboard look everywhere, with shared lines between sections instead of separate boxes with gaps
- The Plugins tab and plugin pages use the same look
- List rows in plugins follow the host list status colors: accent for good, dark for offline or bad
- Line charts that cover a few minutes show seconds in their times
- Plugins a new release adds to the image start on only when they are recommended. The rest are installed and left off for an admin to turn on
- Session tokens are stored as hashes, so a database copy holds no working logins (#1753)

- Host status, import and export, and credential tools now start on for new installs
- Sync now starts on in a new desktop app, so it can link to a server
- The first run plugin picker leaves plugins you did not choose off instead of removing them
- The Linux Flatpak now installs from flatpak.termix.site on x86_64 and arm64, and `flatpak update` keeps it current
- Dropdowns and text areas are the same size as the text fields next to them
- A page's own tabs sit above its search bar
- A plugin view that is still starting shows the same loading spinner as the rest of Termix

### Fixed

- Exporting hosts keeps each host status check setting and interval (#1787)
- A linked desktop app now updates a plugin that came with the app when the server has a newer copy (#1785)
- The first run plugin picker no longer sets the default layout and themes to Remove. They always stay on
- Alerts with no icon no longer squeeze their text to one word per line
- Password fields with the show button are the same height as the other fields next to them
- Button groups next to tabs no longer touch the lines of the tab row
- The Secure your account setup step no longer shows up empty when no passkey or authenticator plugin is on
- An installed plugin update older than the copy in a newer image is removed at startup instead of logging an error every boot
- Canceling a download to the desktop app right as it starts no longer leaves a partial file behind
- Changing two interface settings at once, like resetting the dashboard, now saves both instead of only the last one
- Release notes on a plugin's page are no longer cut off on the left
- The Community badge in Browse is no longer missing its top border
- Official plugin pages no longer show a stray divider before the author
- The version picker on a plugin's page is no longer empty for a plugin installed from a local build
- The plugin video no longer has a second border around it
- The hint at the bottom of Browse and the stored data footer on plugin pages have the same padding as the rest of the page
- Sign in methods on the Security page have a line between them
- Chart axis labels with long units, like KiB/s, are no longer cut off
- Filters, view toggles and small buttons in a toolbar are the same height as the search box next to them
- Save and Cancel at the bottom of a form are the same height as other buttons
- State badges in tables no longer stretch across the whole column
- Text boxes, dropdowns, checkboxes and button groups share one border color
- Small icons in buttons sit centered instead of half a pixel off
- Installing Termix as an app works behind a proxy that needs a login cookie
- The hosts Import / Export button and menu entry show their name again instead of a text key
- SSH logins to servers that only offer group exchange no longer stall for up to a minute while checking a large key exchange group
- Plugin views can open the host editor again, so the terminal's Edit host button works after a failed connection
- The Linux arm64 and armv7l desktop builds start again instead of failing to load the image library
- The terminal offers to fill a saved sudo or SSH password at a password prompt again
- Closing the desktop app on GNOME, like Fedora Workstation, quits it instead of minimizing, since GNOME has no tray to bring it back from
- A deleted or changed host no longer stays in the host list when a list refresh was already running (#1782)
- Plugin connections to a shared host are no longer reused between people, so each person connects with their own login
- A session that still has to set up a second factor can no longer open terminals or other live connections
- A login still waiting on its second factor can no longer be used for desktop sync
- Someone with time limited manage access can no longer share a host or credential so it outlasts their own access
- Changing your password signs out your other sessions before it answers
- A host setting that needs a permission can no longer be changed through host import, bulk edits, host defaults or desktop sync without it
- Requests sent with no body get a clear error instead of a server error
- On PostgreSQL and MySQL, a link with an invalid id finds nothing instead of failing with a server error
- On MySQL, a plugin update that stopped halfway through its database changes finishes on the next start
- Plugin host settings no longer show the previous host's values for a moment after you switch hosts
- Switching layouts closes the old layout's tabs again when you sign in
- A plugin panel beside a tab that fails no longer blanks every open tab
- Scrolling with the pointer over a row of tabs scrolls the page again
- A host list refresh that finishes late no longer puts an older list back on screen
- Switches in settings and the host editor are named for screen readers
- The show password button and the sign in fields are translated

## 26.11.0

### Fixed
Expand Down
Loading
Loading