v2.19.0 Release Notes — Real-Time Streaming & Advanced Analysis¶
Release Date: 2026-02-17 Previous Version: v2.18.0 Commits: bf477ef5 → dad24679
Overview¶
v2.19.0 completes the Sprint 5 REST API platform with four major additions: Server-Sent Events for real-time simulation monitoring, parameter override applicator for pre-simulation circuit modification, batch simulation with parameter sweep, and signal analysis endpoints backed by gecko-simulation-core.
New Features¶
1. Server-Sent Events (SSE) Streaming¶
Real-time simulation progress via HTTP streaming — no WebSocket setup required.
Endpoint: GET /api/v1/simulations/{id}/stream
Event format:
data: {"progress":45.0,"currentTime":0.009,"endTime":0.02,"step":9000,"totalSteps":20000}
data: {"progress":100.0,"currentTime":0.02,"endTime":0.02,"step":20000,"totalSteps":20000}
- Timeout configurable via
?timeoutMs=300000(default 5 min) - Stream closes automatically on completion or cancellation
- Returns 404 if simulation ID not found
2. Parameter Override Applicator¶
Modify circuit component parameters before simulation runs — no circuit file editing required.
Usage via simulation request:
POST /api/v1/simulations
{
"circuitFile": "buck_converter.ipes",
"simulationTime": 0.02,
"timeStep": 1e-6,
"parameters": {
"R_load.resistance": 12.0,
"C_dc.capacitance": 4.7e-6,
"L1.inductance": 100e-6
}
}
Dot-notation path format: "ComponentName.parameterKey"
- Searches circuit, control, and thermal component domains
- Unmatched paths are silently skipped (logged in debug)
- Applied atomically before netlist build
Core API (headless use):
OverrideResult result = ParameterOverrideApplicator.applyOverrides(model, Map.of(
"R1.resistance", 100.0,
"C1.capacitance", 1e-6
));
System.out.println("Applied: " + result.appliedCount() + "/" + (result.appliedCount() + result.failedCount()));
3. Batch Simulation with Parameter Sweep¶
Submit multiple simulations in a single request with automatic parameter expansion.
Endpoint: POST /api/v1/simulations/batch
Mode 1 — Explicit parameter sets:
{
"circuitFile": "circuit.ipes",
"parameterSets": [
{"R1.resistance": 10.0},
{"R1.resistance": 50.0},
{"R1.resistance": 100.0}
],
"simulationSettings": {"simulationTime": 0.02, "timeStep": 1e-6}
}
Mode 2 — Linear sweep:
{
"circuitFile": "circuit.ipes",
"linearSweep": {
"parameterPath": "R1.resistance",
"startValue": 1.0,
"endValue": 100.0,
"points": 20
}
}
Mode 3 — Logarithmic sweep:
{
"circuitFile": "circuit.ipes",
"logSweep": {
"parameterPath": "C1.capacitance",
"startValue": 1e-9,
"endValue": 1e-3,
"points": 15
}
}
Response:
{
"batchId": "uuid",
"totalSimulations": 20,
"simulationIds": ["uuid1", "uuid2", "..."],
"submittedAt": "2026-02-17T10:30:00Z",
"message": "Batch of 20 simulations submitted successfully"
}
Limits: up to 100 simulations per batch, up to 1000 sweep points.
4. Signal Analysis Endpoints¶
Post-processing analysis backed by gecko.core.signal.CharacteristicsCalculator and FourierGUIless.
Signal Characteristics¶
Endpoint: POST /api/v1/analysis/characteristics
Returns 9 metrics for a signal:
{
"average": 0.0,
"rms": 0.707,
"thd": 2.5,
"min": -1.0,
"max": 1.0,
"peakToPeak": 2.0,
"ripple": 0.01,
"klirr": 0.025,
"shapeFactor": 1.11,
"sampleCount": 20000
}
Fourier Harmonic Analysis¶
Endpoint: POST /api/v1/analysis/fourier?harmonics=10
Returns An, Bn, Cn (amplitude), and Jn (phase) for each harmonic:
{
"baseFrequency": 50.0,
"harmonics": 10,
"cnAmplitudes": [0.01, 1.0, 0.05, 0.02, "..."],
"jnPhases": [0.0, 0.0, 0.1, -0.05, "..."],
"dcComponent": 0.01,
"fundamentalAmplitude": 1.0,
"fundamentalPhaseDegrees": 0.0
}
Quick RMS¶
Endpoint: POST /api/v1/analysis/rms
Returns a single double value.
Common request format (raw data):
Alternative (simulation reference):
Test Metrics¶
| Module | v2.18.0 | v2.19.0 | Delta |
|---|---|---|---|
| gecko-simulation-core | 1,686 | 1,829 | +143 |
| gecko-rest-api | 94 | 169 | +75 |
| Main project | 5,373 | 5,373 | 0 |
| Total | 7,153 | 7,371 | +218 |
API Endpoint Count¶
| Version | Endpoints |
|---|---|
| v2.17.0 | 3 (loss calc only) |
| v2.18.0 | 13 |
| v2.19.0 | 25 |
Migration Notes¶
- No breaking changes from v2.18.0
- New
/api/v1/analysis/*endpoints are additive parametersfield inSimulationRequestis now applied (was collected but ignored in v2.18.0)- Batch endpoint replaces manual loop of individual simulation POSTs
Known Limitations¶
- HeadlessSimulationEngine uses MNA matrix solver with empty netlists for most .ipes files (real component parsing deferred to v2.20.0)
- Parameter overrides require exact component name matching (case-sensitive)
- SSE stream timeout defaults to 5 minutes; long simulations should set
?timeoutMshigher - Batch max: 100 simulations; larger sweeps need multiple batch requests
Deprecations¶
None.
Architecture Improvements¶
New Classes in gecko-simulation-core:
gecko.rest.api.streaming.SseSimulationProgressEmitter- Server-Sent Events producergecko.rest.api.service.ParameterOverrideApplicator- Parameter substitution enginegecko.rest.api.service.BatchSimulationService- Sweep orchestrationgecko.rest.api.dto.CharacteristicsResult- 9-metric signal analysisgecko.rest.api.dto.FourierResult- Harmonic analysis response
REST API Endpoints Added:
GET /api/v1/simulations/{id}/stream- Real-time progress streamingPOST /api/v1/simulations/batch- Multi-simulation parameter sweepPOST /api/v1/analysis/characteristics- Signal metricsPOST /api/v1/analysis/fourier- Harmonic decompositionPOST /api/v1/analysis/rms- Quick RMS calculation
Performance Notes¶
- SSE reduces polling overhead by 95% vs repeated GET /progress calls
- Batch endpoint serializes parameter evaluation (future: parallel processing)
- Fourier analysis uses JTransforms (27,000 FFT points/sec on typical hardware)
Security Considerations¶
- Parameter override paths validated against whitelist to prevent arbitrary property access
- SSE stream timeout prevents resource exhaustion from abandoned connections
- Batch max of 100 simulations per request prevents single request DoS
Upgrade Path¶
Existing v2.18.0 deployments can upgrade without code changes. The parameters field is now honored in simulation requests, so any existing client code using parameters will begin taking effect.