Profinity 2.3.3 release notes
Profinity 2.3.3 is the patch after Profinity 2.3.2. Profile and settings files are checked when they load, a custom side menu is stored in one shape, and a licence that is missing, expired, or not valid leaves a server on the License page so it can be replaced. A service account cannot be the last administrator, and it cannot sign in with a password.
Read Upgrading from 2.3.2 before you upgrade a system that is already on 2.3.2. The Profinity 2.3 release notes and Profinity 2.3 breaking changes still describe the step from 2.2.
Profiles and settings files
Profinity reads a profile only from profile.yaml in the profile folder.
A folder that holds only profile.json, Profile.pprof, or a .yml file is not listed as a profile, and those files are left as they are.
Refer to When a configuration file is invalid.
A key at the top of profile.yaml that Profinity does not define stops that profile loading.
Profinity creates a new default profile, makes it the active profile, and writes the reason to the log.
The invalid file is left unchanged.
Keys that earlier builds saved, and that this release does not use, are ignored, so the profile still loads.
Those keys are componentMenuLayout, componentsMenuLayout, defaultDashboardFilename, attachments, readOnly, remote, and useCustomComponentMenu.
Settings inside a component are not checked this way.
config.yaml and security.yaml stop Profinity when they are empty, cannot be read, contain a key Profinity does not define, or name an environment variable that is not set.
Profinity writes nothing, and the message names the file and the reason.
Run Profinity --preflight-only against the data folder before you upgrade a production system.
Refer to When a configuration file is invalid and Profinity 2.3 breaking changes.
Loading security.yaml no longer resets the site security policy.
The session length, the sign-in method, and the password rules in config.yaml stay as they were saved.
A restart no longer replaces config.yaml or security.yaml.
The tag history limits on the Tags tab, including Max Total Points (All Tags), are kept after a restart.
Refer to Tags.
An uploaded dashboard is checked before it replaces the current file, and a profile pack whose profile.yaml is not valid is refused and then removed.
When a valid upload replaces a dashboard, rules file, or collections file, Profinity keeps the replaced file as <file>.bak.
Refer to Profile Dashboard and Manage profiles.
If active_alerts.yaml is damaged or empty, Profinity rebuilds the current alert state from the daily alert files.
Acknowledged and silenced alerts stay acknowledged and silenced.
Refer to When a configuration file is invalid.
A rule, collection, or derived tag with a key Profinity does not define is skipped. The editors mark it Invalid, and saving is refused until every item is valid. The file is not changed when it loads.
Menu layout
The side menu is the menu section of profile.yaml.
The YAML tab in the Menu Layout editor shows that same list.
A menu saved by 2.3.1 or 2.3.2, or written with a key Profinity does not define, is ignored as a whole.
Profinity shows each component in its default group, writes one message to the log, and leaves the profile file unchanged.
The Menu Layout editor shows the reasons.
Saving from the editor writes the menu section and leaves the rest of the profile alone.
Refer to Menu Layout.
Licensing
A licence file issued for an earlier 2.3 build was signed over a payload that included the document version.
Profinity 2.3.3 checks a payload that leaves version out, so that file fails its signature check and is not valid.
maxProductVersion stays part of the signature.
Obtain a reissued licence from Prohelion before you upgrade a production server.
After the new file is installed, a later change to the document stamp does not invalidate the signature.
When a licence is missing, expired, or not valid, a server stays reachable. A user with the Security administration permission lands on the License page, with a banner that says why, and can upload a replacement. Other users see a message that the licence needs renewing. Profinity checks the date while it runs and restarts itself once when the date passes. Refer to Licensing.
Service accounts and stored secrets
The last administrator who can sign in cannot be switched to a service account. Profinity refuses the change. The message says that a service account cannot sign in, so at least one administrator who is not a service account must remain. A service account that tries to sign in with a username and password is told: "This is a service account and cannot log in with a password." Use its API token. Refer to Service accounts.
Secrets that an earlier build stored under the shared default encryption key read as blank. Re-enter the Profinity AI key, a component password that comes back empty, and a two-factor secret that no longer works. A service-account token that the current signing key rejects is replaced when Profinity starts. The previous token stops working, and the log names the account. Copy the new token from the account's User Actions tab.
Dashboards, themes, and derived tags
Opening a dashboard no longer writes the file.
An absolute tag path with fewer than four segments, such as /Solar/Total, stays absolute.
A dashboard still in the 2.2 format fails validation, and a dotted address such as Component.Message.Signal is not accepted.
Reset that dashboard from its template, or bind it again with slash paths.
Refer to Tag tree paths and dashboard binds.
A theme can set app.title to an empty value.
The sign-in page then shows no title text under the logo.
Refer to Themes and branding.
A derived tag that reads a component property reads that property whenever the derived tag is read, so it follows the current value. A component property is a value the component supplies when it is asked, rather than a tag that publishes each change. The derived tag no longer stays at the value from when Profinity started. A derived tag that also reads an ordinary tag still updates when that ordinary tag changes. Refer to Derived tags.
The rules, collections, derived tags, menu layout, and dashboard editors disable SAVE when there is nothing to save, or when an item is marked Invalid, and they say which of those it is. They reserve the permission message for a role that cannot save.
A component setting that is outside its allowed range is marked when its dialog opens.
Docker, samples, and CAN adapters
Each Docker image includes the script compiler for its own processor.
If that compiler cannot start, Profinity keeps running, scripting stays off for that session, and the log says why.
The scripting setting in config.yaml is not changed, and the next start tries again.
Refer to Install Profinity with Docker.
Profinity keeps its data-protection keys in .dp_keys inside the artefacts directory, so they stay on a Docker volume when the container is replaced.
Refer to Artefacts directory.
On a first start, when config.yaml does not exist yet, Profinity copies the Example Profile, the example scripts, the example web page, and the example CAN replay log.
An upgrade does not replace files that are already there, and a sample you delete is not copied back.
The PCAN and PCAN FD adapters stay on Peak.PCANBasic.NET 4.10, so they keep working with the PCANBasic library already installed with the adapter.
Upgrading from 2.3.2
- Obtain a reissued licence from Prohelion before you upgrade a production server. A licence signed for an earlier 2.3 build fails its signature check.
- Run
Profinity --preflight-onlyagainst the data folder. Aconfig.yamlorsecurity.yamlwith a key this release does not define stops Profinity, and the file is left unchanged. - Rename a profile that is still
Profile.pprof,profile.json, or a.ymlfile toprofile.yamlinside its profile folder. Profinity does not convert those names. - Open the rules, collections, and derived tags editors and correct anything marked Invalid. An item with a key Profinity does not define is skipped.
- Open Menu Layout and select SAVE if you had arranged the side menu. A menu saved by 2.3.1 or 2.3.2 is ignored until you save.
- Check dashboards that still use a dotted tag address or the 2.2 dashboard format.
They fail validation.
Slash paths are unchanged, including a short absolute path such as
/Solar/Total. - Re-enter an AI key, component password, or two-factor secret that comes back blank. Copy a service-account token that the log says was replaced.
- Confirm you still have an administrator who is not a service account. The last one cannot be converted.