What's New1.6.4 - Subscription API – 1.6.4

PlugStream Change Logs

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)

Performance & SLO

SLO Targets:
P95 < 200msP99 < 500msAvailability > 99.5%
Loading performance data...
Performance Tests:
Passedstaging test
10/2/2026
P95: 65.3msP99: 95.1msHTTP errors: 0.00%Availability: 100.00%99,061 requests
HTTP statuses: 200: 99,061