Nightly Changelogs - 2019

Nightly Changelog: 8.0.0- beta.20190109

Ignition Platform

FB11672 Renaming of data type doesn’t propagate change to dependent nodes
Renaming a data type now works as a refactor, updating all dependent nodes with the new name.
Also, in working on this ticket, we fixed a bug where you couldn’t effectively modify the parent type of an instance if the current type didn’t exist.

FB12141 Deleting many tags is slow and FB11579 warning about deleting type definition


FB12084: Popups in Edge open to correct size

FB11608: Perspective timezone project setting

FB12031: Default tag provider for the project is used for tag history query bindings when no provider is specified on the tag path

FB12116: Added useful log messages for diagnosing authorization decisions in perspective

For diagnostics on denied project or view access, set logger perspective.ClientSession to debug

For diagnostics on denied gateway-scoped actions, set logger com.inductiveautomation.perspective.ComponentModel to debug

Here are examples of the logs:

Denied Project:

D [p.ClientSession               ] [23:43:25]: Access to project is denied. Diagnostic information: {"permissions":{"type":"AllOf","securityLevels":[{"name":"Authenticated","children":[{"name":"Roles","children":[{"name":"Administrator","children":[]}]}]}]},"webAuthStatus":{"authenticated":false,"securityLevels":[{"name":"SecurityZones","children":[]}]}} session-project=test

Denied View:

D [p.ClientSession               ] [23:39:09]: Access to view New View 4@T[0] is denied. Diagnostic information: {"permissions":{"type":"AllOf","securityLevels":[{"name":"Authenticated","children":[{"name":"Roles","children":[{"name":"Administrator","children":[]}]}]}]},"webAuthStatus":{"authenticated":false,"securityLevels":[{"name":"SecurityZones","children":[]}]}} project=test, session-project=test

Denied Gateway-scoped Action:

D [c.i.p.ComponentModel          ] [23:42:04]: Error running actions. project=test, component=root/Button, view=New View@C
com.inductiveautomation.perspective.gateway.action.ActionDeniedException: Unable to fire action: access is denied. Diagnostic Information: {"permissions":{"type":"AllOf","securityLevels":[{"name":"Authenticated","children":[{"name":"Roles","children":[{"name":"Administrator","children":[]}]}]}]},"webAuthStatus":{"authenticated":false,"securityLevels":[{"name":"SecurityZones","children":[]}]}}
	at com.inductiveautomation.perspective.gateway.action.SecuredAction.runAction(
	at com.inductiveautomation.perspective.gateway.model.ActionCollection$ActionSequence$ExecuteActionsTask.lambda$call$0(
	at com.inductiveautomation.perspective.gateway.api.LoggingContext.mdc(
	at com.inductiveautomation.perspective.gateway.model.ActionCollection$ActionSequence$
	at com.inductiveautomation.perspective.gateway.model.ActionCollection$ActionSequence$
	at com.inductiveautomation.perspective.gateway.threading.BlockingTaskQueue$
	at java.base/java.util.concurrent.Executors$
	at java.base/$$$capture(
	at java.base/
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(
	at java.base/java.util.concurrent.ThreadPoolExecutor$
	at java.base/

The diagnostic information is JSON-encoded and contains the permissions required to access the resource and the webAuthStatus which includes any user information (if they are logged in) and the security levels they are granted.

  "permissions": {
    "type": "AllOf",
    "securityLevels": [
        "name": "Authenticated",
        "children": [
            "name": "Roles",
            "children": [
                "name": "Administrator",
                "children": []
  "webAuthStatus": {
    "authenticated": true,
    "user": {
      "id": "539ebc26-4790-4447-bad9-a500279a8514",
      "userName": "admin"
    "securityLevels": [
        "name": "Bar",
        "children": []
        "name": "Authenticated",
        "children": [
            "name": "Foo",
            "children": []
            "name": "Roles",
            "children": []
        "name": "SecurityZones",
        "children": []
1 Like

Nightly Changelog: 8.0.0- beta.20190110

Ignition Platform

FB11935 update system.tag functions and intellihints
Updated some intellihints, and changed the behavior on these items:

  • The system.tag.move function has been split out into copy and move functions
  • system.tag.move: on client side, you had to specify a source provider for each tag to move. Now the project default provider will be used if the provider is not specified (client only). The destination provider must still be specified.
  • system.tag.delete will no longer allow the root or the types folder to be specified for deletion
  • A timeout has been added to system.tag.readBlocking and system.tag.writeBlocking


FB12126: Fix system tag provider submanager delegation during reads


FB10829: Fix Diagnostics titlebar in Vision client

FB12133: Fix label transparency behavior in Vision

Nightly Changelog: 8.0.0- beta.20190111

Ignition Platform

FB12277: OpenID Connect Client ID and Secret are each url encoded as per the spec

FB11891: Fix intellihint background color


OptionalLibs Manifest now shows correct names
Looks like the pack200 changes didn’t include the correct changes for the optional libs filenames. Now the optional lib manifest properly refers to the jars as jars and not jar.jar.

Load Theme lazily in NamedTheme
This prevents deserialization something containing a NamedTheme from failing on headless Java installs.


FB11844 Sparkline stroke width now stays constant on most browsers
Added non-scaling-stroke vector-effect to the polyline. Also re-ordered assignments to ensure they are properly set before they are used.


FB12013: Fix ConcurrentModificationException in designer startup
Same logic just in a different place to avoid the ConcurrentModificationException

FB12013: Load jxbrowser in modules, rather than always/in the designer

Nightly Changelog: 8.0.0- beta.20190114


FB12157: Fix source for Linux so Bitrock installs can use gwcmd


Fix NodeEditor.Expander error caused by regression to Lambda

Perspective npm version updates and fix status dir structure
Preparing for SDK example publishing


FB10814 Render loading view state display if view path is not configured for embedded views
It’s difficult to tell the difference between when a view path hasn’t been configured or specified, and when we are just waiting for a tag binding to return. Therefore, we just render the loading view state display when the view path is empty in order to cover both cases.

FB11167: View selection flash when tapping elements and empty space within client

FB11044: Session Remains Active During Expired Trial

FB12136: Adding and rendering few more attributes to the root <svg> on perspective import

Nightly Changelog: 8.0.0- beta.20190116


FB11634: Add WebDev/Web Browser module to zip installers

Ignition Platform

FB12253: Client Secret is now obfuscated in OpenID Connect IdP Configs

  • Add the capability for a WebAuthStrategyAdapter to transform config data from the user before saving
  • OIDC IdP Config UI updated to send back obfuscated client secret unless the user opts-in to change the client secret
  • Exports of OIDC IdP configs include the obfuscated client secret
  • Internal DB stores the obfuscated client secret
  • If there is a problem obfuscating or de-obfuscating the client secret, it will be logged at the debug level of logger gateway.HttpOIDCClientServiceConfig and the effective client secret will be empty string. This will happen for any existing beta users who have saved a plaintext client secret or when importing a config which was exported before this change is merged in. This will also happen if the value for -DencodingKey changes from when it was last obfuscated. The client secret can be corrected by going to the config UI for the IdP and entering / saving the client secret.
  • Removed a bunch of code which provided backwards capability for older beta configs since we do not need to support backwards compatibility between beta versions


FB12200: Remove Drawing component(s) from component palette, container type list

FB12273: NPE collapsing folder in binding editor tag browser
Support null TreePath

FB12017: Perspective project property for Identity Provider should have option for "None"

FB10658: Error dialog design cleanup

  • update the arrow icons in the prev/next buttons
  • update blue link color in the details footer
  • replace red error icon with new, flat icon from LaF
  • refine padding to be consistently 16/8 pixels
  • position scrollbar correctly in the panel

FB11844 pers. sparkline stroke width units set to px
Now that non-scaling-stroke is set as a vector effect this needs to be in px units instead of % to prevent harsh scaling of the stroke (which is based on the diagonal length of the viewbox). Also exposed some of these so they can be overridden as props. Perspective Sparkline stroke is no longer affected by differences in the data points by using a non-scaling-stroke vector effect

FB11242 Perspective PDF viewer now renders text

FB12015: Move Perspective project permissions to its own section in Project Properties
Separate Permissions from Perspective General Properties

FB10841: Reduced log severity on closed channel during page send

Nightly Changelog: 8.0.0- beta.20190117

Enterprise Administration

11625 forward port EAM upgrader to handle 7.9 to 8.0 upgrades
Most of this was forward porting, but there were some changes made to UpgradeAssistant and CommissioningServlet to handle 8.0 specific items.

12293: Added a Force Upgrade button for redundant pair remote upgrades
This will allow a redundant pair to still be remotely upgraded even if the nodes cannot communicate with each other. Warnings about losing comm are displayed in a confirm dialog before the forced upgrade.

Ignition Platform

11756: EAM System Tags Issues

  • Fixed issue of clashing tags on EAM controller because the agent was adding system tags at setup instead of startup.
  • Fixed issue of agent system tag folder persisting after the agent was deleted from the controller.

11519, 12242, 12244: Various tag browse fixes

  • FB11519: Have the Designer check if the Tag Browser panel is active on project load.
  • FB12242: Fixed drag and drop within the Vision Client Tags Folder
  • FB12244: Fixed tag expansion for client tags (Vision Client & System -> Client)

12286: Fixed NPE from null license manager


12254: Handle bad scope and bad user attribute mappings more gracefully
Bad scope or user attribute mapping config no longer prevents client from launching.

12199: Set direct tag binding to stale value on creation
Pulled the PropertyBinding static values to the interface to re-use them

12092: Always show arrows for time picker
Perspective datetimeInput component now always shows arrows for the time picker.

Nightly Changelog: 8.0.0- beta.20190205

Ignition Platform

12581: Opc tags aren’t responding correctly to tag group deletion

12374: Make invalid projects show on config page

12544: Convert DB tag providers to standard providers on upgrade

12576: Fix NPE when Gateway Scripting Project is not set


12303: Replace SafeFocusHighlightBorder for deserialization

Nightly Changelog: 8.0.0- beta.20190206

Ignition Platform

12533: Updated Windows Font Config
Updated docs to account for all alphabetic sub charsets instead of the first match only. Simplified by removing unnecessary key/value pairs.

12563: Fix persistence of open on startup/about window toggles

12606: Kill white space in prop editor title bar
Fix prop editor title bar background color when configuration warning icon not present


11581: Added supplemental certificate support on gateway
Now the Gateway on startup will load supplemental certificates from data/certificates/supplemental into the default trust store (usually cacerts unless otherwise specified). This is helpful to allow ssl connections that use a self signed certificate that doesn’t come from a trusted Certificate Authority.

Things to note:

  • This directory is included in gateway backups.
  • A backup of the default trust store is created on the gateways first start with the JRE and placed as a peer to the default trust store (if cacerts, file is cacerts.bak).
  • Accounts for system props ‘’ and ‘’ args to alter the trust store that is operated on as well as the password if its been changed.

Ignition Platform

12602 Fixes “Internal Error” thrown on some gateway config pages

12639: Fix remote history query through realtime tag provider
Just had to uncomment a line that brought it back to working like in 7

12586: JDBC driver improvements
-12559: NPE when creating connection if MySQL connection props undefined
-12198: Create new default profile for MariaDB
-12290: Add MSSQL JDBC driver back to distribution/installers

12552: Mark a tag group modified when changing with the custom editor

12625: Avoid reloading open Vision window when setting 'Open on Start’

12595: Using the same project export function across gateway and designer

11847: Incorrect bookkeeping for composite udt nodes

11596: Improve UDT drag/drop behavior in tag browser

12617: Issues when dragging tags out of udt definitions into other places
We should now be able to drag from a type definition out into a normal folder (including the root)

12592: Fixes 2 issues with redundancy: delete project doesn’t propagate, and NPE when trying to force full refresh.

11679: A few issues with historical tag groups
Upgrades the tag property model to support "resource" value sources- groups of values that are usable by multiple properties, in this case, tag groups.


12314: EAM remote upgrade: create temp jre and use to run the actual upgrade process

OPC UA discovery service routes
Implements routes for calling FindServers and GetEndpoints discovery services.

Shut down previous connection synchronously when swapping
This fixes a race condition where the shutdown applies
Uncertain_LastUsableValue quality to tags in the shutdown thread during or after the new connection has started up and created monitored items.

Change SystemManager.getHome to more accurate getData

Update menu location for legacy storage page
Somehow the Notifications page was working correctly despite using the same enum as the Storage page.


12575: Tag history binding UI fixes

Nightly Changelog: 8.0.0- beta.20190208

Ignition Platform

12627: Edge config for new projects fixed

  • New edge gateway now creates global props on startup
  • Project config edits handle missing global props gracefully for Edge and Standard

12662: Fix Edge project conversion / startup logic

12631: Hide internal version fields in realtime tag provider settings

12615: String in place of enum value can wreak havoc on tags.
2 things:

  1. If an incorrect property value makes its way into a propertyset, get() will return the default value (or the "else" value) instead of throwing an error.
  2. TypeUtilities.toString was calling the localized version of the enum toString (TimeUnits implements Localized). This isn’t right, and is why we have toStringLocalized. I’m guessing there’s a high chance this will change the display of objects in some places, but hopefully not much. Most places should be using the right LocalizedEnumListCellRenderer (or whatever the class is called)

12653: Deserialization error on template due to method removed from BitwiseExpression
Fixed the BitwiseExpression, but also tweaked the deserializer so that this type of problem is reported as a warning and not an unhandled exception.


Better launcher install abort message on 32-bit windows
Now when installing either launcher on windows if its a 32-bit os a warning dialog appears to the user and aborts the installation. Also the create desktop shortcut option is checked by default.

Nightly Changelog: 8.0.0- beta.20190211

Ignition Platform

12684: Deadlock in redundancy system

12489 projects overview invalid project indicator
This fixes the overview page, and provides an indicator to which projects have invalid parents. It also lays the foundation for indicating that the parent drop down on the project edit page needs to be fixed- and provides a way to display a "prevalidation" message.

12644: Project config UI now only shows applicable fields in Edge

12641, 12574 Keep config pages from blowing up if they don’t have a category or title model.


Update Embedded JRE to 11.0.2
Updated JRE for gateway, launchers, and clients to azul version 11.29 -> openJDK version 11.0.2

Modbus Driver

12335: pass a modifiable copy to findAndRemoveMetaTagItems()


12482: Script actions are blocked in designer if security permissions are set on the action
Ignore SecureAction authorized check if in designer

12474: Client Sessions Unaffected by Deleting a Mounted Page
Allow diff to use pageConfig with no pages

12495: Activate tool and set/clear selection only if there is an active ViewResourceEditor associated with the workspace
Activate component and set/clear its selection only if there is at least one editor tab open

12643: Allow support for periods to be included in folder and file names in Perspectives

12585 convert Trialbar to TypeScript and tweak flex layout

  • Cleaning up CSS prefixes
  • Homepage Responsive Design
  • Trialbar Typescript and Responsive design

11739: Fixed click events not firing for NEF
The numeric entry field was rendering between the direct/protected input and the read only input. Have an outer wrapper div that wraps either listen to events instead.

12660: Prevent NPE from PagesConfigPanel

Nightly Changelog: 8.0.0- beta.20190212

Ignition Platform

11929 identity provider should be unique

11811 NCLs support supplemental certificates across JRE upgrades
Now there is a certificates directory in .ignition/clientlauncher-data which can hold certificates that will be loaded into the default trust store for both the NCLs as well as during the bootstrap process. The latter ensures that the JRE being used to launch a vision client or designer has had the certificate imported into its default trust store before communicating. There are 3 scenarios that this is necessary:

  1. For the launcher to comm with the gateway (achieved by adding certs at the launcher startup)
  2. Launching a client from a gateway where a compatible JRE has already been downloaded
    All certs in the certificate directory are loaded into the default trust store before attempting any comms with the gateway during bootstrap.
  3. When launching clients before a compatible JRE has been retrieved from that or any gateway
    We are on the launcher JRE which still has the certificate required to launch anyways. Once a restart is triggered to bootstrap on the correct JRE the certs are loaded (see option 2)

The certificate directory is generated if it’s missing and a backup of the default trust store is created before being modified in whatever JRE the launcher/bootstraping is running on.

12391: Avoiding error message on tag node deletion

12603: Project config pg no longer has inappropriate options for Edge


OPC UA cert pages upload and download routes and UI


12508: Fixed tag browser in SFC editor not refreshing to show latest tags
Also fixes the same issue with the tag selection tree panel in the transaction group where clause.


12377: DataSetAggregrateFunction returns bad quality instead of throwing exception

Nightly Changelog: 8.0.0- beta.20190213

Ignition Platform

12483: Autoselecting some nodes in the Designer save list to prevent the user from creating orphan nodes
The Designer Save dialog has been modified to autoselect items as needed to prevent orphan project resources.

12028: Identity Provider test login doesn’t automatically pull in newly assigned roles
Replaced cached AuthenticatedUser with up to date user from user source

12702: Designer props panel no longer shows non-Edge settings

12710: Allow for numeric user names

12682: Alarm notification config on Edge now displays


Implement ExposedTags Namespace


12261: Apply the default width and height to the Access Denied display if the useDefault properties are set

12297: Throw ellipsis when username pushes against the Sign Out button
Throw ellipsis on the username when it becomes long enough to push against the Sign Out button.

10941: Kill event bubbling at the Map’s DOM element for the mousedown and touchstart events to keep display anomalies from happening in parent DOM nodes

12493: changing title of pie chart no longer crashes designer, also update amcharts library

Nightly Changelog: 8.0.0- beta.20190214

Alarm Notification

12375: Fix NPE when report datasource is misconfigured

Ignition Platform

12596: add logging, log possible improper resource manifest during import
Projects imported with folders containing resource manifests will now log helpful warnings to aid import failure diagnosis

12694: Fix issue caused when not all fields shown in project config edit pg

12505: Fix designer details status page

12117 Commissioning props moved to separate json

12612: Fix the icon for pipelines


Updates to opc ua cert pages

Add ‘overridable’ setting to project resources
Resources can now only be overridden by a child project if the resource is overridable, which is true by default.

Modify the check of removing tag folders and children


12724: ensure FileInputStreams are closed in PKI routes


12709: Fixed typo in the file

12666: Perspective project name Unicode support

Nightly Changelog: 8.0.0- beta.20190215

Ignition Platform

12775: Entire opc subscription shut down when any tag is unsubscribed

12583: Check another mime type on import for Windows

12339 sanitize SortableTable.jsx cells if the cell just contains a string

12613: Recurse type definitions in multi-instance wizard, type editor

12605: Use the empty singleton name pattern when importing into the designer

12530: Tags aren’t respecting redundancy levels
Added redundancy checks into the tag execution system, blocking most value change based operations when not active. Put special logic in the opc actor factory to manage subscriptions.

12547: Default documentation to null to avoid signature mismatch

12670: Check designer permissions on push


Milo NodeManager update

Configure UsernameProvider with the client’s CertificateValidator

12713: Improve openURL browser fallback on Linux


11516: Updated property transient icon

12651: History binding doesn’t return tag path when return format is set to Tall
Also fixes Calculations query in Perspective (and anywhere that might accidentally set the wrong return size)

12720: Tag history ui deletions


12551: Prevent NPE if (Vision) dropdown is bound to empty dataset

Nightly Changelog: 8.0.0- beta.20190219

Ignition Platform

12657: Check to see if a project is in memory before firing a project added in BaseProjectManager

12763: Gateway UI Improvements: Spacing, perma-links, etc.

12775: Entire opc subscription shut down when any tag is unsubscribed


Gateway Page Title/Breadcrumb Consolidation
All page titles should now be displayed in the breadcrumb bar, with a couple exceptions (Config Overview).

Fix target NodeClass when building parent references


12758: check if request is null before posting to request cycle


12744: Value axis responds to min and max ranges of 0

12468: iOS native app loses session when multitasking
Change default page timeout to 10 minutes. Allows more time for Page to remain disconnected. Helps mobile clients keep state (auth) when users are switching between apps or sleeping device.

12716: dropdown component gets portal destination after mount

12732: Fix redirect after login/logout if project name is non-ASCII

Nightly Changelog: 8.0.0- beta.20190220

Ignition Platform

11898: Fix missing intellihint


12635: Users are no longer able to delete wrong component from project browser
12793: Add duplicate name check to custom scripts and msg handlers


12738: Adding a null check for the resourcePath while crawling parent containers in the loadTemplate method
12728, 11940: Updated icons for reporting

Ignition Platform

12501: Revert designer -> gateway comm error logging to debug
12640 GW UI polish
12819: Removed unused test harness code that was tripping up sonar
12669: New tag folder no longer gets created after you click cancel.
12730: Fix wicket errors in EAM license details page
12784: Fix tag provider getting set to null on Edge
12798 Add user tag delete option for managed tag providers
12785: Stop Edge notification config page from throwing exception on view


Change property tree readDatasetTypes to plain readDataset

Table fixes and updates

  • Custom component event for cell editing
  • PropertyTree readDatasetTypes for better auto render detection. Don’t need the data of the dataset, just the defined types
  • Pager data updates if the length of processed data changes
  • Add boolean to auto render detection
  • Add column config string render mode
  • Valid dates now apply formatting

12204: Perspective password field

Use Int.MAX_VALUE as default array and String encoding limits
There’s no need to worry about actually decoding an array or String this size because the max message size is significantly smaller. This way we don’t have to guess about what the right default size may be.


11445: component selection boxes should update correctly when switching from preview mode
12790: Revive Recently Modified Views
12718: Fixed bug in saving custom scripts on views


12824: Avoid retrieving windowInfo for wrong resource

Nightly Changelog: 8.0.0- beta.20190222

Ignition Platform

11450: Updated shared dock UI

12802: Another fix for null values coming back from routes

12843: Fix open project screen not closing

12701: Change spammy loggers to trace

12772: Altering security level policies and user attribute mappers no longer blindly logs out all users
Altering security level policies and user attribute mappers no longer blindly logs out all users in a session associated with the changed IdP.

12637: Tag export shows success dialog even if cancelled
Only show tag export finished if successfully exported


12557: Add license for Perspective

11728: Require ID for toggle action to fire

12805: Add Disable Keyboard option
Change search config enabled to match meta name ‘enable’.
Search enable was never getting turned off because meta name didn’t match config name. By default when search is disabled the mobile keyboards will also be disabled.