Releases: citrineos/citrineos-core
Releases · citrineos/citrineos-core
v1.4.2
v1.4.1
v1.4.0
New Features:
- Unit tests!
- Coverage will increase in each release from now on.
- Test runner added to github actions.
- OCPI no longer referenced here
- citrineos-ocpi/Server can be used to start up OCPP 2.0.1 + OCPI 2.2.1
- Advanced MeterValue handling
- Support for deprecated MeterValues CallAction
- Support for SignedMeterValues in TransactionEvents & MeterValues messages
- @AsDataEndpoint decorator expanded
- Now can support authentication middleware
- OCPP Message types now explicitly allow Null
- json-schema-processor.js updated to generate these updated interfaces
- Support for Reservations!
- Support for ISO15118-based SmartCharging!
- Subscription API supports direct-to-database subscriptions via Directus without restarting Citrine
- Sequelize database connection now retries if it fails initially, such as due to the database not being ready to accept connections yet
- Renovate added
- automated interval for CostUpdated messages for transactions can now be cleared (necessary for various transaction fail states)
v1.3.2
Updates to support OCPI new features & fixes
- Authorization interface added to support real time authentication (will be useful for custom authorization flows beyond OCPI)
- SQL Views added to sort OCPP data with queries referencing data beyond Core
- Miscellaneous fixes & functions added
v1.3.1
Changes to support citrineos-ocpi 0.1.1
Fixes in citrineos-core:
- When SetVariablesResponse Rejects, VariableAttribute value now rolls back
- Issue where Transactions.isActive was never set to false fixed
- New start-everest script in Server/ for starting the OCPP 2.0.1 compliant software-in-a-loop version of dockerized EVerest, the Linux Foundation Energy project for open source charging station firmware
v1.3.0
Release 1.3.0:
OCPI 2.2.1 support now available! See initial citrineos-ocpi release.
Payments module (powered by Stripe) open sourced! See initial release notes. Includes support for novel Scan & Charge feature allowing anonymous payments via credit card at any charging station with a user interface display capable of the appropriate OCPP 2.0.1 use cases.
New Core features:
- OCPP 2.0.1 Smart Charging added
- New, streamlined Data API endpoint for setting charger password (old method of using the device model crud api still supported)
- MessageOrigin changed and usage altered: 'CentralSystem' now 'ChargingStationManagementSystem' to match OCPP 2.0.1's terminology; MessageOrigin now always refers to the party which generated the message, not the party which initiated the call
- GeneratedAt iso timestamps added to message broker message context and VariableAttribute data entity
- New Tenant module added, will contain Data API for managing multi-tenancy in future releases
- Relationship between IdToken and AdditionalInfo made from one-to-many to many-to-many
- StatusNotification and NotifyEvent now update DeviceModel; StatusNotifications associated with ChargingStation as well
- Location expanded, now includes address info
- Tariff expanded, 'unit' replaced with new fields: pricePerKwh, pricePerMin, pricePerSession, taxRate, authorizationAmount, paymentFee
- TotalKwh now populated in Transaction
- New Base database methods: readAllBySqlString, readNextId, findAndCount
- RepositoryStore class added to simplify handling of repository singletons
- OCPI 2.2.1 support added to Server
!NOTICE! Breaking Changes:
- Introduction of IdTokenAdditionalInfo join table will require removing IdToken and AdditionalInfo tables in order to restructure them
- Ocpi support added to Server REQUIRES that citrineos-ocpi be cloned in the same root folder as citrineos-core for builds to work
v1.2.3
Urgent bug fixes:
- TransactionEvent handling issues: repositories declared with incorrect namespace, sequelize transaction not correctly passed to all db access, meterValues not correctly referenced
- Local SystemConfig used docker filepath for acme certificate; has been updated to resolve from cwd
v1.2.2
Urgent bug fixes:
- Sequelize.upsert found to be unreliable. All upserts replaced.
- Issue caused by naming overlap between Base repository methods and interface repository methods fixed by renaming all interface repository methods.
- .nvmrc file added to specify node version 18 for developers with different local versions.
- onChange trigger for memory cache didn't fire for some operations. trigger added.
v1.2.1
Patching security vulnerability
https://github.com/citrineos/citrineos-core/security/dependabot/1
v1.2.0
New Features:
- Supports ISO15118 Use Cases: Authorization via Contract Certificate, Get15118EVCertificate, Installing V2G root & refreshing leaf certificate via SignCertificate flow (Smart Charging features not included, slated for 1.3).
- Improved Certificate Management - Directus or an ftps server can now store your certificates; Data endpoint to regenerate certificates added; Data endpoint to reassign websocket server certificate added; Data endpoint to trigger sending an InstallCertificate message to a charger using current certificate chain.
- Events added to CrudRepository via CrudEvent interface: 'created', 'updated', 'deleted'. Extends EventEmitter; adds typing to 'on' and 'emit' methods for fully-typed lifecycle event handling.
- IdTokenType 'NoAuthorization' now accepted by default.
- Github Actions added! Lint-fix, compilation, and integration tests fire on merges to rc and main branches. New Github docker image added to packages on release tag push.
Bugfixes:
- Websocket server now handles 'pings'--previously only emitted pings and handled pongs.
- VariableAttribute fields with defaults no longer override values in database
- Json processor now creates classes that agree with prettier & eslint
- Unused Redis image removed from docker compose in Server/
- Basic Auth header password can now contain ':' character without breaking
- Environment variables used to adjust SystemConfig no longer trigger log spam
- 'ByKey' CrudRepository methods no longer use 'id' as PK field, now use Sequelize to fetch actual PK field in case it is not 'id'