Skip to main content

Migrating to v4.0

An existing configuration.json loads unchanged, and every new property is optional. Three changes need a decision before you deploy. The notes below cover the v4.0 line — v4.0.0 through v4.0.2 — and everything in them applies whichever you install.

1. tara.dll must be the one shipped with this release

GIPS Desktop now reads its entitlement from the licensed-option list tara.dll reports, requiring the GIPS_HEATMAP option, rather than calling the DLL's initializeMainGIPS entry point. It is the same list TARA itself works from, so a license that grants GIPS needs no separate provisioning step, and a GIPS entitlement can be added to an existing license without a new build.

Requires the tara.dll from this release or later

Earlier builds do not report the option list at all, and GIPS Desktop reads as unlicensed against one, naming the missing entry point in its log. The DLL shipped beside gips.exe has been updated to match, so an ordinary install of the release zip needs nothing done to it. A machine whose license does not carry GIPS_HEATMAP sees the same "license expired" dialog as before.

2. The default POI color ramp has changed

The default is now a six-step cividis ramp with "no capacity" as its own darkest step, plus a seventh color above the top break. At the seven discrete steps GIPS actually draws, the old ramp collapsed several classes into one for a deuteranope reader and again in greyscale; cividis stays ordered in both, and the capacity surface is drawn from the same colors.

Deployments without their own ranges will look different

A deployment that has never set its own ranges in configuration.json picks up the new default. A deployment with its own ranges is untouched — this is a default, not a migration. To keep the old look, set the previous colors explicitly in the Layers pane of the Settings dialog before exporting.

3. The AvailMWMinImpact column has been removed

The TrLim column now shows each constraint's effective TrLim — the greater of its TrLim and the MW available at the configured impact percentage — so a second column for the MW available at the impact threshold said the same thing twice. It is gone from the Constraints, POI and scenario detail tables alike, along with the cell note that marked the lowest one with a negative TrLim.

A deployed configuration.json that still names the column continues to load; the entry is dropped, as is any other column naming a field the application no longer has. If your tour or methodology text refers to the column, reword it.

Other changes worth knowing

Effective TrLim is now used consistently. A POI's TrLim is the smallest effective TrLim among its constraints, falling back to the bus's own TrLim when it has none, so the Constraints table, the POI table and the marker colors can no longer disagree about a bus's headroom. The upgrade-cost discount follows the same number, and available MW is computed from the magnitude of dfax, so a negative dfax no longer yields a negative quantity of MW.

Moving the Injection / Withdrawal slider updates the tables, not only the map. The configured TrLim floor is applied on the same path, which fixes it being dropped whenever "Ignore POI Impact" was toggled.

POI markers represent sites. POIs sharing a coordinate draw as one marker with a count, and cluster bubbles stop at zoom 11 rather than 14. See Capacity Surface.

Firewall allowlist. The map's tiles and styles come from assets.maps4powergem.com, and Esri imagery from server.arcgisonline.com when the basemap is set to Aerial. Those are the only two sites a user's browser contacts. See IT Guide. A GIPS Desktop installation whose network cannot reach PowerGEM can download the map styles from a server of your own — see Administrator Options.

The Settings dialog has been reorganised into panes, with browser-local preferences separated from the deployment settings written to configuration.json. See Customizing GIPS.

Column dialogs show readable names. busnum reads as Bus Number, busvolt as Voltage (kV). Headings already in configuration.json are untouched. The internal row identifiers — id in the POI dialog, id and busid in the Constraints dialog — are no longer offered; a configuration.json that lists one keeps its column.

gips.exe is smaller. GIPS is built on React 19 and Vite 8, and the desktop executable is roughly a third of its previous size. A development WClusterTrLimSumJson.json that was being embedded in it — never read — is gone.

Also in this release

Smaller changes, collected from the 258 commits between the v3.1.6 and v4.0.2 tags (March to August 2026):

  • Rename and delete scenarios in GIPS Desktop, beside the scenario picker. See Managing scenarios.
  • X Clear table filters clears the POI, Constraints, Harmers and data-layer tables in one click, and filtering a table selects the first row that remains.
  • Visibility follows selection: show one constraint of a POI on the map and every constraint of the next POI you select is shown; harmers behave the same for the selected constraint.
  • Cluster bubbles take their range's colour when every item inside falls in the same range; a mixed cluster draws neutral blue.
  • Harmer values are recalculated when the injection changes, and the Harmers table empties rather than going stale when the selected POI's constraints are all filtered out.
  • Cells and headings too narrow for their text show the full text on hover.
  • maxZoom is honoured by GIPS Lite and Pro. See Map limits.
  • dfaxAsPercent and contingencyBaseCaseAlias are honoured from configuration.json. See Other configuration properties.
  • A legend that hides, shows and scrolls, so the map can be read under it on a short window.
  • The window title names the loaded file in GIPS Desktop.
  • Missing logo files fall back to header-icon-logo.png and then to GIPS's own logo rather than a broken image.
  • gips.exe is code-signed by PowerGEM, so SmartScreen and publisher-based allowlisting recognise it.
  • Wijmo 2026, and tables that react to state directly — what makes the counts, notes and three-state sorting above possible.

Removed

  • The AvailMWMinImpact column and its cell note, as described above.
  • The warning property of configuration.json, along with its schema entry and default. Nothing ever read it. A configuration.json that still lists it continues to load and validate; the property is ignored as it always was.
  • Leaflet, react-leaflet and its marker-cluster plugin, replaced by MapLibre GL.
  • The Docker image and its docker-lite build script, which were never part of a release. GIPS Lite and Pro ship as zips of static files as they always have.

Fixed in this release

  • The dark theme's map is dark. Both basemaps are supplied without their own ground layer and GIPS provides one; it was providing the light theme's colour under both themes, which showed as washed-out, blurry place labels over pale ground in dark mode. Streets and Aerial are both affected in dark mode; the light theme is unchanged.
  • A busMarkerInfo set in configuration.json is now used as written. It was previously discarded and rebuilt from the built-in defaults on every load. Omitting the property still follows the visible POI table columns, and it is no longer written into the file, so it keeps following them after a save.
  • A browser preference left behind by an older build no longer white-pages the application. Unreadable stored values are discarded before the first render and the affected settings return to their defaults.
  • The POI marker label and cluster POI list now show every field they are configured with; Minimum TrLim, Maximum TrLim, Cost, Pre-Existing Cost and Incremental Cost were silently omitted, which affected the default configuration. MW and cost values now carry the heading and number format of the matching POI table column.
  • MW Impact in the Constraints table, and MW Impact, MW Change, Pgen Base and Pmax in the Harmers table, are no longer editable. They are computed values.
  • Rank in the Harmers table sorts numerically; non-numeric ranks such as Study sort last.
  • Sorting the Constraints table by Monitored Facility places the group maximum first among rows sharing a facility.
  • The two places that applied the "Ignore POI Impact" discount to a constraint's cost no longer disagree; the incremental part is kept, and is derived from the constraint's initial upgrade cost rather than its current one.
  • A constraint's harmer whose stress generator is missing from the file is skipped and logged rather than drawn at latitude 0, longitude 0.
  • Migrating a version 1 or 2 configuration.json no longer writes column names or widths into busMarkerInfo entries.

v4.0.2

  • The capacity surface's popup names the POI behind the colour, and the name is a link that selects it. Clicking past the support radius gives no popup rather than one reporting nothing in reach. See Clicking the surface.
  • Clicking a POI, a cluster, a constraint, a harmer or a data layer icon puts up that feature's own popup only; the surface's popup is no longer left standing behind it.
  • Dismissing a cluster popup by clicking elsewhere on the map no longer swallows whatever that same click opened.
  • Administrator options and a configurable map styles location. See Administrator Options.

Upgrading from a much older release? See Upgrading from v2.5.0.