PlugStream is continuously updated to improve reliability, security, and user experience. This page provides a transparent record of every software and firmware release, including what changed and why it matters.
Latest
OCPP API 2.17.1
Ocpp API – 2.17.1
2.17.1
Tests: passed (378/378)
Service
September 27, 2026
Tags
#ocpp-api
Ocpp API – 2.17.1
Bug Fixes
managed-charging: recognise a manual tariff source as chargepoint-api sends it (74e0ecd)
commands: refuse a SetChargingProfile TxProfile with no transaction (e7a4b97)
manual-session: send a 1.6 Charge Now as a RemoteStartTransaction with a valid idTag (8177dbf)
charging-profiles: clear a deleted profile from the station (77bb498)
charging-profiles: keep platform profile ids off 0, 1 and the site cap (b68ba61)
portal-requests: refuse a device the path tenant does not own (4ae00ff)
api: authenticate the internal performance-test route (5fb4e63)
auth: never accept unsigned identity headers when any env says production (a7ba258)
auth: time out the auth-api service identity request (08485c4)
commands: a real result replaces ocpp-api's own expiry; sweep without holding the lock (5c3ae4c)
commands: an accepted withdrawal clear no longer marks managed charging applied (7b173da)
commands: an idempotency takeover cannot be undone by the original failing (6402448)
commands: an Idempotency-Key is no longer stranded in_progress by a cancel or crash (311418c)
commands: bound the command queue view and batch requests (15f89f2)
commands: fail a poison outbox row alone, cap publish attempts, never reconnect on a return (5eb20d7)
commands: hand a self-concluded result to the results queue when applying it fails (ff8f932)
commands: let a real result replace a provisional timeout; gate side effects (d258bed)
commands: match a tenant-mismatched result by command id and device (b5820e3)
commands: prune old command_dispatch and published outbox rows (2e4d178)
commands: renew the outbox lease per row and skip commands already closed (fe55817)
commands: retry command results with backoff instead of dead-lettering on the second try (d79d398)
commands: return the newest command history rows, oldest first (5417ebb)
commands: scope caller-chosen command ids to the tenant and device (ff1484d)
commands: sweep commands that never get a result; mark dispatched on publish (b02a444)
hardware-config: send what is asked to unknown units, per registered version (5d02e3a)
health: return generic dependency errors and log the cause (179ce7b)
managed-charging: a preview no longer wipes the plan the station holds (ae11f52)
managed-charging: address each station at its registered OCPP version (8e260fd)
managed-charging: applying a plan keeps the Octopus Go boost in the state (227d544)
managed-charging: count only the part of each Octopus Go window before departure (fd5354f)
managed-charging: install every managed plan under the device's fixed id (cfde4bc)
managed-charging: one fixed-id boost slot, shared and tracked by owner (8e5afd3)
managed-charging: record a plan only once it is queued, and back off failed Sense runs (8757b2a)
managed-charging: size plans to the charger's current ceiling, not its nameplate (c82366d)
managed-charging: time out calls to chargepoint-api, vehicle-api and tariff-api (8d6ee59)
migration: close the workflow state machine and stop leaking DB errors (3855461)
mode-reconcile: re-send a managed plan under the device's fixed id (e50a826)
mode-reconcile: registered version, checks before commands, truthful managed state (68e1198)
portal-requests: send the owning tenant, so ocpp-core checks it too (e614426)
profiles: refuse a create before storing it; send an update to the station (9730a17)
profiles: require CHARGEPOINT_CONTROL to write charging profiles (d80b94c)
rules: page include_global listings in the database (f5ffc9e)
rules: publish rule events through a transactional outbox (ddf651b)
rules: validate rule JSON as ocpp-orchestrator runs it, and cap its size (fb43191)
schedule: send local windows as UTC, re-send before clock changes, fixed id (060723b)
security-events: acknowledge under a write scope, as the signed caller (79e3d28)
session-indicator: a stale revision is a failure, and resyncs the revision (315ca60)
session-indicator: show progress only for a plan in force, on a fixed target (526ad8a)
session-indicator: skip an unhandled event instead of panicking the consumer (e7d1d85)
vehicle-sense: auto-apply only while the charger is in Smart Charging (72265bb)
vehicle-sense: Charge Now holds Sense off only when its start took effect (5e3194e)
managed-charging: forward empty tenant headers to chargepoint-api (185adf7)
Features
profiles: express a 2.x charging-profile payload for the station's version (ac1b0d3)
profiles: one fixed id per device for each platform profile, and the clear that moves a device onto it (af3577a)
rules: add RULE_EVENTS_PUBLISH_ENABLED to switch off platform.rules events (320eeca)
Performance Improvements
api: drop the discarded per-request tenant-api organisation lookups (c964d89)