QOps 3.1.1

October 2026

Version manager: installed versions, switching and the update channel

The version panel in the Portal has a Version settings window. It lists the QOps versions installed on the computer, newest first, with the date each was built, which one is running, and a badge for where it came from: green Release, amber for a staging channel with its name, grey for anything else (another channel, MSI or PKG, or Unknown). A filter shows All, Release, Staging or Other. Switch on any complete version restarts the Portal on it at the same address, and the Start menu and Desktop shortcuts start that version from then on; it is greyed out, with the reason, while operations, an update or a restart run.

The same window sets the Update channel: Release (recommended), Staging, or Other with a channel name such as staging-mcp. A channel other than Release shows a warning that its builds are not release-tested. After the change the Portal checks what the new channel offers and installs nothing. The version panel has Check for updates, and shows Update to <version> only when the channel has a newer build.

Staying on an older version now lasts. After QOps-SetVersion, or QOps-Update -Force to an older build, QOps stays on the version you chose until an update installs a newer one or you switch to the newest installed version, and later updates compare the channel with the version you chose. QOps-Update -Force asks you to close the Portal first when the Portal runs from a version it would replace.

The same is available from PowerShell and the Portal API: QOps-Update -CheckOnly checks the channel without installing and names the cause when the check fails (no network, GitHub's request limit, a rejected token); QOps-Version -Installed lists the installed versions as objects with their origin; QOps-SetUpdateChannel -PassThru returns the change as an object. The Portal API lists installed versions, switches between them and sets the channel.

Switching versions, changing the channel, updating, restarting and stopping the Portal are accepted from the computer the Portal runs on and from the addresses listed in the new Portal:AdminAllowedAddresses setting in portal.settings.json. Used at http://localhost, nothing changes; from any other address the request is refused with 403 naming the setting, and the Version settings window is read-only. Behind a reverse proxy on the same computer every caller looks local, so restrict these actions at the proxy.

If an installation is broken or removed, the installers for Windows, macOS and Linux are on the Installation page.

Smoother start in GitHub Codespaces

Licence activation in a GitHub Codespace works out of the box: it completes in the Codespace's home folder, and it no longer needs a configured Qlik profile first. Configure your Qlik connection when you are ready to work with it.

Git panel: a filterable list for many remote branches

With more than eight remote branches, the Branches card shows one button that opens a filterable list instead of a chip per branch. Each row has Check out and Merge, and the list works from the keyboard.

Fixes

  • Line endings follow one order in every command and in the Portal. QOps uses the first that is set: EOLStyle in the repository's .qopsconfig, the global EolStyle, eol= in .gitattributes, Git's core.autocrlf or core.eol, then the system's line ending. With CRLF set, a file with mixed endings is written entirely in CRLF. If EOLStyle is set in neither configuration file, some files may now be written with different endings than before; set it to keep the endings you want.
  • The Portal lists the same applications as QOps. The application list and the screens built on it find applications the way Prepare and Build do: a folder with App.yaml or App.json directly inside the repository or inside a folder listed in AppSubfolders; the folder name no longer has to end in -prj. Spaces around AppSubfolders entries are ignored.
  • Charts from the assistant get a title only when you ask for one, and combo chart lines get their own axis unless your request puts them on the bars' axis.
  • Licence activation works in Docker containers on hosts with cgroup v2, and the Portal and QOps commands in one container can check the licence back to back.
  • An expired licence is renewed whenever the licence service can be reached.
  • QOps-Deactivate says when there is nothing to deactivate.
  • Qlik Cloud connection errors say why the connection failed. Can't validate server is followed by the HTTP status and, for a rejected API key, the setting that holds the key and the QOps-SetConfig command that stores a new one.
  • Three switches stop the command where they do not apply: QOps-Release -ReloadBeforePublish outside Qlik Cloud, QOps-Publish -Placeholders without -Reload, and QOps-Publish -ServiceUrl. On Qlik Cloud, QOps-Release -ReloadBeforePublish carries the reloaded data into an application already published in a managed space.
  • Settings saved in the Portal's environment editor are read back reliably when several screens read the configuration at the same time.