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.
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.
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.
maxZoomis honoured by GIPS Lite and Pro. See Map limits.dfaxAsPercentandcontingencyBaseCaseAliasare honoured fromconfiguration.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.pngand then to GIPS's own logo rather than a broken image. gips.exeis 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
warningproperty ofconfiguration.json, along with its schema entry and default. Nothing ever read it. Aconfiguration.jsonthat still lists it continues to load and validate; the property is ignored as it always was. - Leaflet,
react-leafletand its marker-cluster plugin, replaced by MapLibre GL. - The Docker image and its
docker-litebuild 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.
StreetsandAerialare both affected in dark mode; the light theme is unchanged. - A
busMarkerInfoset inconfiguration.jsonis 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
Studysort 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.jsonno longer writes column names or widths intobusMarkerInfoentries.
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.