Skip to main content

iPool & Apollo — Changes Brief (February–April 2026)

Prepared for: Support Website Team Date: 2026-04-23 Covers: iPool v26.022 (Feb 27), v26.03 (Mar 17), v26.04 (Apr 14) | Apollo (Feb–Apr 2026)


How to Read This Document

This document summarizes all user-facing changes across iPool and Apollo from the last ~3 months. Each section is organized by product and version. Changes are grouped as:

  • New Features — new capabilities users can access
  • Bug Fixes — corrections to existing behavior
  • Behavioral Changes — existing features that now work differently
  • Breaking Changes — changes that require user action or awareness

Internal/developer-only changes (TypeScript migration, code refactors with no user-visible effect) are excluded.


PART 1: iPool

iPool v26.04 (Released 2026-04-14)

New Features

Contract Tracing (TraceCon.csv)

New per-interval output file capturing contract settlement data during simulation. Each row represents one contract at one dispatch interval.

Columns: ID, NetPrc, StrPrc, RefPrc, Qty

  • ID — Contract identifier
  • StrPrc — Strike/contract price (the agreed price)
  • RefPrc — Reference/spot price at settlement
  • NetPrc — Net price (Strike minus Reference — the contract's value above or below spot)
  • Qty — Contracted MW quantity (can vary by interval)

Who uses this: Users running portfolio simulations who need to trace individual contract settlements interval-by-interval — useful for contract valuation and hedging analysis.

Contracts in Scenario Summary (ScenObj.csv)

ScenObj.csv now includes a contracts section (T6/D6 rows) listing each contract's ID, buy/sell direction (BOUGHT or SOLD), participant ID, and portfolio ID. These rows appear interleaved within the portfolio section of the file.

-port Flag (Replaces -portfolio)

New command line option for loading multiple portfolios.

Syntax:

iPool.exe -o ScenarioID -port EERI -port MERALCO -x     # Load specific portfolios
iPool.exe -o ScenarioID -port ALL -x # Load all portfolios

BREAKING: The old -portfolio flag no longer works. Any scripts or batch files must be updated.

Revenue & Cost in Trace Reports

Three trace files now include financial columns:

FileNew ColumnsWhat They Show
TraceLod.csvRev, CostPer-load-site revenue (Price x Generation) and cost (Price x Demand) per interval
TraceSte.csvCost, FuelPer-site cost and fuel type string per interval
TracePrt.csvCostPer-participant cost per interval

BREAKING for parsers: TraceLod.csv header changed from Price,Gen,Dem,Cap to Price,Gen,Dem,Cap,Rev,Cost. Any downstream tools that rely on column position or count need updating.

Fuel-Specific Price Caps

New revenue-reporting price caps for coal and CCGT generation units.

How to configure: Add lines to Defaults.csv (located in the iPool data directory):

PrcCapCOAL,300.00
PrcCapCCGT,150.00

What they do: When a region's clearing price exceeds the cap, the unit's reported revenue is calculated at the capped price instead. The actual market clearing price is unchanged — this is a per-unit revenue adjustment for modelling administered price scenarios, not a market-wide intervention.

Important notes:

  • Only affects COAL and CCGT fuel types. OCGT and other fuels are not capped.
  • Set to 0 (or omit from the file) to disable.
  • Not available as a CLI flag or UI setting — Defaults.csv is the only configuration point.
  • A freshly auto-generated Defaults.csv does not include these keys — they must be added manually.

Bug Fixes

FixDescription
Marginal price detectionFixed a case where the bid stack would traverse past the true marginal bid and settle on an incorrect (often higher) price. Significant price accuracy improvement.
Demand bid unloadingTightened the floor condition for demand bid unloading, preventing over-loading of demand in the dispatch engine.
Fractional MW precisionMultiple fixes to preserve decimal precision throughout the system — region demand, demand forecasts, hourly averaging, link flows, and sent-out generation are no longer truncated to integers. Particularly important for 5-minute historical data.
GWAP calculationVolume-weighted average price now correctly uses generation energy only, not generation plus demand. Fixes settlement reporting accuracy.
Outage event filteringSpurious outage events from single zero-generation intervals eliminated. Outages now require 30+ minutes of zero output before being recorded.
Interval size in revenue/costRevenue and cost calculations now correctly scale by the configured dispatch resolution (5-minute or 30-minute intervals).
RECALC modeFixed interval size not being set before fast simulation in RECALC mode, causing incorrect revenue/cost multiplications.
Save-As from command lineFixed scenario saving from command line to use proper Save-As with new simulation ID.

Behavioral Changes

Detection threshold lowered from 1 hour (12 consecutive intervals) to 20 minutes (4 intervals). Events are now detected earlier, with improved handling of flow-level changes during a derating event and correct termination at end-of-simulation. A 1 MW tolerance is applied to handle rounding in 5-minute historical data.

Link flows changed from integer to double precision. Eliminates up to 0.5 MW error per link per interval that was compounding in constrained network dispatches. Particularly important when using 5-minute historical data with fractional MW flows.

NoDis Mode — Revenue Revaluation

-NoDis (No Dispatch) mode skips the market dispatch engine entirely and revalues revenue/cost using pre-loaded price profiles. This is used for two scenarios:

  1. RECALC (Price Revaluation): Re-run the financial summary of an already-dispatched scenario using different prices, without re-running the market simulation. Useful for price sensitivity analysis.
  2. Fast Simulation: Quick financial summary using demand and price profiles when full market modelling isn't needed (e.g., contracted customer analysis).

Typical RECALC workflow:

# Step 1: Run a full simulation
iPool.exe -o ScenarioID -run ScenarioID -x

# Step 2: Revalue with different prices, scoped to a portfolio participant
iPool.exe -o ScenarioID -NoDis -port EERI -p NewPrices.csv -x

When combined with -port, only that participant's units, meters, and contracts (both buy and sell) are included in the revaluation.

ELP Optimisation (-opELP ALL)

ELP (Energy Limited Plant) optimisation now accepts ALL to enable optimisation for every storage in the model, rather than naming each individually.

What is an Energy Limited Plant? A generator whose total output over a period is constrained by a finite energy budget — not just an instantaneous capacity limit. This includes battery storage (BESS), pump storage, and hydro with reservoir constraints.

What does -opELP do? It activates a Load Duration Curve (LDC) peak-lopping strategy:

  1. Computes the "duck curve" — gross demand minus must-run solar/wind generation — to find the residual demand that needs dispatching.
  2. Each week (or daily for batteries), builds a duration curve and finds a trigger level — the demand threshold above which it's worth dispatching the storage.
  3. Each interval, sets the storage's output based on how far demand exceeds the trigger: full output when demand is well above, reduced output near the threshold, zero output below.
  4. For charging, the logic is inverted — charge when demand is low.

Output: OptBid_{StorID}.csv per storage, containing the optimal bid prices, energy summary, and the cheapest daily charging windows.

Syntax:

iPool.exe -o ScenarioID -opELP ALL -x          # All storages
iPool.exe -o ScenarioID -opELP BESS1 -x # Specific storage

Related flag: -opbid <StorID> produces the same optimal bid report but does NOT change how units are dispatched during the simulation — it's report-only.

Bid Band Creation

Bid bands are now always fully populated across all 10 bands. Previously, the last band (Band 10) was automatically pegged to 0.9999 x VOLL (Value of Lost Load = 90,000, the Market Price Cap). This pegging has been removed because it produced unrealistic price outcomes and masked dispatch problems.

Now, unused upper bands are filled with zero MW at stepped prices (base price + 2000/band increment) rather than near-ceiling prices.

-remark Flag (Restored)

The -remark flag appends user-supplied text to the scenario description when saving.

Syntax: iPool.exe -o ScenarioID -remark "Sensitivity test with high gas prices" -s NewScenID -x

The remark text appears in the saved scenario's description and in ScenInfo.csv / Summary.csv output files. Multi-word remarks must be quoted.

Other Behavioral Changes

ChangeDescription
Must-run/duck-curve metricsRegion reports now correctly compute must-run generation (MRGen), duck-curve demand (Dem-MRGen), and dispatchable demand (DispDem) during price-only revaluation. These appear in TracePool.csv, TraceReg.csv, and TraceZone.csv.
Net demand precisionNetDem.csv and demand file output now show one decimal place instead of integers.

iPool v26.03 (Released 2026-03-17)

New Features

-genlist — Generator List from IEMOP Registry

Reconciles iPool's generator database against the IEMOP generator registry CSV file. Automates what was previously a manual process.

What it does:

  1. Reads the IEMOP registry file (columns: Resource Name, Description, Region, Station, Trading Participant)
  2. For each generator: updates name, site, fuel type, and owner in the model
  3. Auto-detects fuel type from keywords in the DUID or description (e.g., "Solar", "Battery", "Coal", "Biomass", "Natural Gas")
  4. Automatically marks solar, wind, and biomass sites as must-run
  5. Creates new units/sites for generators not yet in the database
  6. Cross-checks: warns about model units that don't appear in the registry

Syntax:

iPool.exe -genlist mnm_genlist.csv -x                  # In-memory only
iPool.exe -genlist mnm_genlist.csv -updatedb -x # Write changes to database

The file must be placed in the database directory. Without -updatedb, changes are in-memory only and not persisted.

-CAPEGFile — Capacity Update from IEMOP CAPEG Report

Updates registered maximum capacities from the IEMOP CAPEG CSV file (columns: Trading Day, Trading Participant, Resource Name, Maximum Capacity MW).

Syntax: iPool.exe -CAPEGFile CAPEG_20250804.csv -x

Changes are in-memory only — does not write to the database. Capacities are only updated upward (never reduced). The file must be placed in the database directory.

Typical WESM model maintenance workflow:

  1. -CAPEGFile — update registered capacities from IEMOP CAPEG report
  2. -genlist -updatedb — reconcile full generator registry, write to database
  3. -hist — run historical simulation (Out-of-Merit generators are auto-detected and a .bid file is created for them)

-histskip — Continue Historical Simulations Despite Missing Data

Historical simulations can continue running when data files are missing for certain days. Missing days are logged and skipped while all available data is still processed.

Use case: Extract partial historical datasets without the simulation stopping on incomplete data.

Syntax: iPool.exe -o ScenarioID -hist -histskip -x

-p Prices.csv — External Price Profile Loading

Load price profiles from a CSV file for use in RECALC/revaluation scenarios.

Syntax: iPool.exe -o ScenarioID -NoDis -p Prices.csv -x

Note: Despite what some internal documentation states, -p always takes a file path, never a participant ID. Use -port for portfolio scoping.

-FCMax — Demand Forecast Flexing

Applies a target peak demand to reshape the forecast load curve while preserving its shape. Used in combination with -DFac (demand growth factor) and -ObID (region/meter identifier).

Key concepts:

  • Scaling (-DFac): Multiplies every interval uniformly by the growth factor. The entire load curve shifts up or down proportionally.
  • Flexing (-FCMax): Reshapes the curve to hit a target maximum demand — peaks are raised toward the target while base load stays roughly unchanged. This preserves the load shape better than flat scaling.

When both are used, scaling is applied first (volume adjustment), then flexing (peak targeting).

Syntax:

iPool.exe -iLoad Forecast -ObID LUZON -DFac 1.05 -FCMax 12000 -ObID VISAYAS -DFac 1.03 -FCMax 8000 -x

This applies a 5% growth factor and 12,000 MW peak target to LUZON, and a 3% growth factor with 8,000 MW peak target to VISAYAS.

Important: -FCMax only takes effect for forecasts of 32 days or longer (Forecast2 long-term mode). For shorter periods, only -DFac scaling applies.

iLoad modes (selectable in Apollo or via -iLoad CLI):

ModePurpose
AnalyzeAnalyse existing load profiles
ForecastGenerate demand, generation, and meter forecasts
ReForecastRe-run forecast with updated parameters
CompareCompare forecast results

Output files: DemFC_<ScenID>.csv (regional demand), GenFC_<ScenID>.csv (site generation capacity factors), MtrFC_<ScenID>.csv (meter demand).

Historical Event Capture

Historical simulation (-hist) now automatically captures and writes events to Ev_HST.csv:

  • Unit outages — generators at zero output for more than 30 minutes
  • Link derating events — interconnector flow constraints

Use case: Analyse outage patterns and link constraints from historical runs without manual event identification.

Storage in Fast Simulation

Fast simulation mode (-NoDis) now includes storage dispatch calculations. Previously, storage assets were excluded from fast simulation results.

Zonal Reports

Four new report files provide analysis broken down by market zone. Zonal mode activates automatically when regions in the database have a non-empty Zone field — no CLI flag is needed.

What is a zone? A zone groups multiple regions together. In the WESM market, three zones are pre-defined: CLUZ (Luzon), CVIS (Visayas), CMIN (Mindanao). Zones are configured via the Zone column in the Regions database table.

ReportContentRow Granularity
TraceZone.csvPrice, Gen, Dem, Cap, MRGen, Dem-MRGen, DispDem, reserve prices, marginal unitPer zone per dispatch interval
BidZone.csvMW quantity by price band (16 bands from ≤-100 to >30000)Per zone per interval (WESM only)
FuelZone.csvGeneration by fuel type (COAL, HYDRO, WIND, SOL, BIO, PUMP, OCGT, CCGT, etc.)Per zone per interval
Zone rows in Summary.csvFull summary metrics (capacity, energy, costs, revenues, prices)Per zone

Zonal pricing requires -iprul 2 (Zonal Highest) or -iprul 3 (Zonal Average). Without this flag, zone reports still emit rows but pricing remains nodal.

NetDem.csv — Net System Load Report

Reports Net Demand = Total Demand minus Must-Run Generation (solar, wind, and other must-run units) for the Pool and each Region, per dispatch interval.

This is the "duck curve" metric — the residual demand that dispatchable generators must serve after accounting for non-dispatchable renewable output. Useful for understanding the impact of renewable penetration on dispatchable demand requirements.

Columns: DateTimeEnding, <PoolID>, <Region1ID>, <Region2ID>, ...

Reserve Revenue

Tracks reserve market participation and calculates associated revenues for each generating unit and site.

Data source: Users must manually download two WESM market data files and place them in the history directory (DirHst):

File PatternContainsGranularity
RTDRS_YYYYMMDD.csvPer-unit reserve schedule (type, MW, price)5-minute intervals
RTDOPRSVSUMM_YYYYMMDD.csvPer-region reserve prices5-minute intervals

Four reserve types are tracked: Fr (Frequency Regulation), Ru (Ramp Up), Rd (Ramp Down), Dr (Dispatchable Reserve).

Output in Summary.csv: Reserve prices by type, Reserve Energy (GWh), Reserve Revenue (PM), Alternative Spot Revenue (what those MW would have earned at spot price — a benchmark comparison).

Important: Reserve data is only loaded at report level 3 or higher (-rep 3). At lower report levels, the RTDRS and RTDOPRSVSUMM files are silently skipped and reserve revenue will show as zero.

Related flags:

  • -bWAP — Use week-ahead projection files instead of real-time (hourly resolution, no per-unit reserve breakdown)
  • -bDAP — Use day-ahead projection files instead of real-time

Solar/Wind in Capacity Factor Reports

Dedicated SOLAR and WIND columns added to MRGCFac and MRHCFac must-run capacity factor reports, providing clearer visibility into renewable energy performance.

Fuel Type in Summary.csv

Generation results now include a fuel type column in the summary output, enabling fuel-mix analysis without separate post-processing.

Bug Fixes

FixDescription
Demand bid dispatchFixed critical bug where demand-side bids remained operating under high prices in network-constrained conditions.
Long-term forecastingFixed day type matching to correctly handle leap years and holidays.
FLEX functionCorrected to use Flex (peak reshaping) instead of Scale (uniform multiplication) when changing Target Max Demand.
Demand scalingFixed demand scaling factor (DEF_DFAC) being applied twice during event management.
Zonal fuel trackingFixed array indexing bug in the fuel matrix when running in non-zonal mode.
Save-AsDebugged and corrected the -s SaveAs command line option.
Gas & Hydro OptBidCorrected optimization bidding behavior for gas and hydro generation units.

Behavioral Changes

ChangeDescription
Storage dispatch triggersEnhanced energy level thresholds with allowances: storage stops discharging when energy level falls below minimum + current discharge amount, and stops charging when level exceeds maximum - current charge amount. This prevents over-cycling at the boundaries.
Storage-Price pairingImproved algorithm for finding the optimal charge/discharge price pair. The search now correctly scans from highest to lowest price levels and accounts for round-trip efficiency losses when calculating required charging hours.
ELP OptimisationSimplified and improved the Energy Limited Plant optimization algorithm.
Must-Run dispatch priorityEnhanced dispatch priority handling for must-run generation units in the merit order.
Block price updatesBlock price (the average market price by hour-of-day and day-of-week) is now updated during report refresh. This is used internally to find the cheapest consecutive hours for storage charging in the ELP optimal bid calculation.

PART 2: Apollo

Apollo Changes (February–April 2026)

New Features

Charts can now be shared via URL. Two modes:

  1. Full state URL (?state=<blob>) — Encodes scenario, node, time view, series visibility, styles, y-axis, grid lines, and comparison state into a compressed URL parameter.
  2. Short-code URL (?v=<xxxx-xxxx-xxxx>) — Stores the state on the server and provides a shorter, shareable link. Falls back to the full URL if the server is unavailable.

How to use: Click the "Copy Link" button on any chart. The URL is copied to the clipboard. When a recipient opens the link, Apollo automatically loads the scenario, navigates to the correct node, and restores all chart settings.

Legacy ?s= and ?sc= URL parameters continue to work for backward compatibility.

Command Module UI Redesign

Major restructure from 2-column to 3-column layout:

ColumnContent
Left sidebarCommand sequence (the ordered list of simulation steps)
Middle panelNavigation between parameter categories
Right panelParameter editor for the selected category

Five focused panels replace the single large form: Simulation Rules, Scaling Options, Object Options, Optimisation, and Advanced Simulation Settings.

Template selection moved from drag-and-drop to a searchable modal with tabs (Default / Custom / Edit Scenario) and preview.

A Classic View toggle preserves the original 2-column layout for users who prefer it (persisted to localStorage).

Full-width action bar at bottom: Run, Load, Save, Batch, Settings, Bid Generation.

Full iPool v26.3 CLI Coverage (100%)

The Scenario Designer now exposes all ~122 iPool command line flags through the UI (up from ~62, or ~51% coverage). Users no longer need to manually edit command lines to access any iPool feature. Key additions:

  • RECALC workflow: RECALC scenario type in Type dropdown, NoDis Mode selector (3 states: Dispatch / NoDis / NoDis+ESites), Price Profile file selector
  • Portfolio controls: Portfolio chip list for repeatable -port flags, Save-As dropdown (Don't Save / Save In-Place / Save As)
  • Storage & Optimisation: Optimal ELP (-opELP), Optimal Bid (-opbid), Storage Filter chip list
  • Demand Forecasting: New 4th tab with iLoad mode selector, 6 file inputs, 7 forecast settings
  • v26.3 Features: CAPEG File selector, FC Max Flexible checkbox, MR Solar/Wind files

Note on NoDis mode in the UI: The Scenario Designer presents NoDis as a 3-state selector. In the current iPool code, all NoDis states behave identically (all trigger fast simulation). The UI distinction may reflect planned future differentiation.

DGP View Dashboard

New dashboard tab showing Demand, Generation, and Price without the bid stack complexity. Available for Pool, Region, Zone, Site, and Unit object types.

Use case: Quick overview when you need price/generation/demand trends but don't need the full bid stack analysis.

Contracts Support

Full contract visualization in Apollo, reading from iPool's new TraceCon.csv and ScenObj.csv contract data.

Portfolio tree restructuring:

Portfolios
├── EERI (Portfolio)
│ ├── Sites (sub-group)
│ │ └── 03EERI (Site)
│ └── Contracts (sub-group)
│ └── MYCONT3 — SOLD (Contract)
└── A_DEMO (Portfolio)
├── Loads (sub-group)
│ ├── COMMERCIAL (Load)
│ └── RESIDENTIAL (Load)
└── Contracts (sub-group)
├── MYCONT3 — BOUGHT (Contract)
└── MYCONT1 — BOUGHT (Contract)

Contract Settlement dashboard: Dual-axis chart showing:

  • Left Y-axis (lines): Strike Price, Reference Price, Net Price (PHP/MWh)
  • Right Y-axis (columns): Quantity (MW)

Statistics bar shows average Strike, Reference, Net prices and Quantity.

Data source: Contract data comes from iPool — ScenObj.csv defines the contracts (T6/D6 sections), TraceCon.csv contains the time-series settlement data. The T6 row is a header; D6 rows contain: Contract ID, Direction (BOUGHT/SOLD), Portfolio ID.

Sub-Group Overview

Portfolio sub-groups (Sites, Loads, etc.) now have dedicated charts with selectable traces for Demand, Price, and Generation. Enables drill-down analysis within portfolio structure.

Load Object Type

Load nodes (COMMERCIAL, INDUSTRIAL, RESIDENTIAL, SOLARLOAD) under Portfolio LOADS sub-groups are now correctly typed and routed to TraceLod.csv data, showing proper load demand/generation data instead of the generic site view.

Vantage Module Redesign

Complete UI overhaul of the data download and forecast management module:

Cards-based main view: Each data category (Demand Regional, Demand Zonal, VRE MHCF, Database, Bid Sets) has its own card showing:

  • Current status with freshness badges: up-to-date (check), new (warning), update-available (warning)
  • Download destination paths
  • Download Latest and Browse History actions

First-run setup wizard (3 steps):

  1. Connect — License authentication
  2. Download Folders — Configure 5 download directories (with "Use same folder for Regional and Zonal" option and "Use Defaults from Defaults.csv" button)
  3. Auto-Refresh — Enable/disable with interval selection (5 min to 4 hours)

Category browser: Browse, filter, select, and download specific historical files by category, horizon, geography, and date range.

User Calibration Settings (Vantage)

Users can define scaling rules to adjust demand and capacity factor forecasts, upload them to the Gateway for processing, and use the resulting custom forecast files.

What is CFAC? Capacity Factor — specifically the calibration applied to VRE (Variable Renewable Energy) station data in the MHCF (Must-Run Hourly Capacity Factor) forecast file. CFAC calibration adjusts how much generation a solar or wind station is forecast to produce.

Demand calibration rules:

FieldDescriptionExample
ZoneOne of 18 Philippine zone codes02METRO
Day TypeWhen to applyweekday, saturday, sunday, holiday, or all
HoursWhich hoursall or a range like 8-17
ScaleMultiplier1.08 = increase forecast by 8%
NoteAnnotation"Metro Manila under-forecast correction"

Example demand rules:

  • Zone 02METRO, all days, all hours, scale 1.08 — "Metro Manila systematic 8% under-forecast"
  • Zone 01NLUZ, weekdays, hours 9-18, scale 1.05 — "Business hours consistently underestimated"
  • Zone 05CEBU, Saturday, all hours, scale 0.95 — "Weekend over-forecast — reduce by 5%"

CFAC calibration rules:

FieldDescriptionExample
StationVRE station name from MHCF file headers01BURGOS_W (W=Wind, S=Solar)
HoursWhich hoursall or 6-18
ScaleMultiplier0.90 = reduce forecast by 10%
NoteAnnotation"Wind over-forecast correction"

End-to-end workflow:

  1. Open Vantage Settings → add calibration rules (or bulk-import from CSV)
  2. Click "Submit Calibration" — rules are uploaded to the Gateway
  3. The Gateway re-runs its forecast pipeline with the scaling rules applied (progress is polled automatically)
  4. Custom forecast files appear in the Forecast Cards with a Standard/Custom toggle

Important: Calibration is Electron desktop only — not available in Apollo web mode. Station names must be typed exactly as they appear in the MHCF CSV column headers (~120 VRE stations, no autocomplete).

Web Deployment

Apollo can now run as a web application served by Express or the iEnergy Gateway, accessible via web browser without Electron installation.

Available in web mode: All chart viewing, scenario browsing, analysis, comparison, and export features.

Not available in web mode (Electron-only):

  • Command Module (scenario design and simulation execution)
  • Database Editor
  • Vantage downloads and calibration
  • License validation dialog
  • Directory picker

Authentication: Gateway mode uses license ID + optional password login with JWT session tokens. Express mode uses password-only login.

Other New Features

FeatureDescription
Support Chat PersistenceChat messages survive panel close/reopen within the same app session. "New Chat" button resets.
Gateway JWT AuthenticationLicense ID + optional password login for Gateway mode. JWT stored for session persistence.
npm run deploy ScriptCross-platform build-and-deploy command for deployment.

Bug Fixes

FixDescription
Vantage forecast file paths on GatewayAll Vantage/forecast/calibration endpoints were incorrectly prefixed with /api/v1/ — Gateway serves these at root. Fixed 12 endpoint calls.
Chart export (CSV/XLSX)Fixed silent failures across Profile, Comparison, and MultiScenarioProfile charts. CSV and XLSX exports now work correctly for all chart types.
Chart data export [object Object]Category-based charts were exporting Point objects instead of numeric values. Fixed with proper data unwrapping.
Chart container layoutFixed Highcharts export menu causing the chart container to grow/expand.
Comparison chart settingsSeries style overrides (color, type, line width, dash style) now persist across chart rebuilds. Grid line and axis label settings now applied on initial chart build, not just via settings panel.
Comparison View color swatchColor swatch in Analysis Summary now updates when series color is changed via context menu.
Economics View date corruptionSwitching to/from Economics dashboard no longer corrupts dates to year 2001. Fixed timestamp formatting.
Scenario Designer file pickersAll file-picker dropdowns were empty. Fixed across ScenarioOptions, InputOptions, and BidOptions tabs.
Command module right panelFixed invisible right panel caused by missing CSS import when using lazy component loading.
ScenarioOptions loading guardFixed loading guard that was always false, preventing scenario options from displaying.
Support chat in web modeFixed crash caused by unconditional Electron API call. Now gracefully handles web mode.
Login page flickerEliminated flash of login screen before auth status check completes on web load.
Gateway API base pathFixed multiple issues with API base path configuration for Gateway-hosted deployments.
TreeView fuel filters in web modeFixed silent filter initialization failure when hierarchy arrives as a prop in web mode.
Missing CSS variablesAdded 6 missing theme variables for tree node badges, icons, and hover states.
License ID for support featuresSupport chat and support site now receive the actual license key (was always null).
Gatekeeper error codesAdded missing PASSWORD_REQUIRED and INVALID_PASSWORD error code mappings.

Behavioral Changes

ChangeDescription
-portfolio-portCommand module updated to use -port flag (matching iPool v26.3 rename).
NoDis mode in UIConverted from boolean to 3-state selector (Dispatch / NoDis / NoDis+ESites) in the Scenario Designer.
Highcharts branding"Highcharts.com" watermark removed globally from all charts.
Portfolio sub-group labels"Portfolio Stations" renamed to "Sites" across the app to align with iPool terminology.
Gateway version fallbackDefault Gateway version fallback changed from '2.7.0' to '3.0.0' (no v2 Gateway exists).

Breaking Changes (for integrations/scripts)

  1. -portfolio flag renamed to -port in the Command Module — existing saved templates using -portfolio need to be re-saved.

PART 3: Key Themes for Support Content

Priority Topics for Support Website

1. New CLI Flags Reference

All new flags need dedicated documentation:

FlagPurposeKey Detail
-port <ID>Load specific portfoliosReplaces -portfolio. Accepts multiple IDs or ALL
-histskipSkip missing data days in historical simLogs skipped days, continues processing
-genlist <file>Reconcile generator registry from IEMOPAdd -updatedb to persist changes
-CAPEGFile <file>Update max capacities from IEMOP CAPEG reportIn-memory only, does not write to DB
-p <file>Load external price profile CSVAlways a file path, never a participant ID
-FCMax <MW>Set target peak demand for forecast flexingRequires -ObID and -DFac. Only works for 32+ day forecasts
-opELP ALLEnable ELP optimisation for all storagesIndividual storage IDs also accepted
-remark "text"Append text to scenario descriptionAppears in saved scenario and ScenInfo.csv
-NoDisSkip dispatch, revalue revenue onlyCombine with -port and -p for RECALC workflow

2. Zonal Reporting Guide

Zones activate automatically when regions have a Zone database field set. Document the 3 WESM zones (CLUZ, CVIS, CMIN), the 4 new report files, and the -iprul pricing rule flag.

3. Contract Tracing & Portfolio Enhancements

Both iPool (TraceCon.csv, ScenObj.csv contracts section) and Apollo (contract dashboards, portfolio sub-groups) have significant new contract-related features. Explain the T6/D6 data format and how contracts appear in the Apollo tree.

4. RECALC / Price Revaluation Workflow

Step-by-step guide: run simulation → revalue with -NoDis -port <ID> -p Prices.csv. Explain what changes (revenue/cost) and what doesn't (dispatch/generation).

5. Apollo Web Access

Document what's available in web mode vs. Electron-only features. Explain Gateway vs. Express authentication.

6. Vantage Module

Complete rewrite of Vantage documentation needed. Cover the cards-based UI, setup wizard, calibration workflow with examples, and the Standard/Custom forecast toggle.

7. Command Module Redesign

New 3-column layout with 100% flag coverage. Update all screenshots and navigation instructions. Document the Classic View toggle.

8. ELP Optimisation Guide

Explain the duck-curve concept, LDC peak-lopping strategy, optimal charging windows, and the difference between -opELP (changes dispatch) and -opbid (report only).

9. Reserve Revenue

Document the RTDRS/RTDOPRSVSUMM file requirements, the -rep 3 minimum report level, and where reserve data appears in Summary.csv. Explain the 4 reserve types (Fr, Ru, Rd, Dr).

10. Demand Forecasting (iLoad)

Document the 4 iLoad modes, the scaling vs. flexing distinction, the -ObID -DFac -FCMax syntax, and the 32-day threshold for long-term forecasting.

Known Issues / Caveats for Support Team

  • MCDebug.log — iPool writes MCDebug.log unconditionally to C:\TEMP\ during Monte Carlo runs. This may be a debug artifact; flagged for review.
  • Calibration is Electron-only — Vantage user calibration features do not work in web mode.
  • Web mode limitations — Command Module, Database Editor, Vantage downloads, and license validation are not available in Apollo web mode.
  • Reserve data requires -rep 3 — At report levels 0, 1, or 2, WESM reserve files are silently skipped and reserve revenue shows as zero. No error or warning is displayed.
  • -FCMax requires 32+ day forecast — For forecasts shorter than 32 days, the -FCMax target peak is silently ignored; only -DFac scaling applies.
  • Price caps not in auto-generated Defaults.csvPrcCapCOAL and PrcCapCCGT must be manually added to Defaults.csv; they are not included when the file is auto-generated.
  • CFAC station names — Users must type exact MHCF CSV column header names for calibration stations (~120 VRE stations). No autocomplete or validation is provided.
  • CLI Reference doc errors — The internal CLI Reference (PKG-70) incorrectly states that -p takes a participant ID in RECALC mode. It always takes a file path. Portfolio scoping uses -port.

Document generated: 2026-04-23 Sources: iPool_CHANGELOG.md (v26.022–v26.04), APOLLO_CHANGELOG.md (Unreleased, Feb–Apr 2026), verified against iPool and Apollo source code