Skip to main content

Platform

Latest Beta Version

Removed

  • Remove server license validation logic and related configuration

[10.4.0] - 2026-02-18

Added

  • Event based cache for device power actions on power action endpoints

[10.3.0] - 2026-01-29

Added

  • Caching device entity in redis to reduce mongo load

[10.2.0] - 2026-01-09

Added

  • Accept socket with socketName=front_supra

[10.1.2] - 2026-01-08

Fixed

  • Ignore action Offline.SaveOfflineActionsFile which is no longer used

[10.1.1] - 2025-12-03

Fixed

  • Reduce number of connections to Redis to one per server instead of one per HTTP socket session
  • HTTP socket server properly refreshes its presence in Redis to avoid losing connections when server instances is overloaded on CPU and misses the refresh interval

[10.1.0] - 2025-12-01

Added

  • Upgraded Redis library to the latest for Redis 7+

Fixed

  • Platform HTTP variant is not loosing connections when server instances are restarted

[10.0.0] - 2025-11-20

Added

  • HTTP socket server now extracts and sets hostname from incoming requests for proper connection tracking

Changed

  • Connection to Redis using DragonFly instead of AWS ElastiCache

[9.2.0] - 2025-10-21

Added

  • Device connection tracking now includes hostname information to identify which server instance a device is connected to

[9.1.6] - 2025-10-19

  • Device connections are correctly updated for devices and organizations. It will show correct connections in the Box UI on the device detail page and in the organization monitoring page.

[9.1.5] - 2025-10-09

Fixed

  • delay action requeue - preventing immediate action requeueing when processAction fails for some reason. In that case immediate requeueing could block the eventloop. Happening fe. when device send action to the session associated with partially closed socket (listener still present but socket has been removed from the StatsProvider already ) - ~10000+actions/sec were processed for 30sec (till socket was closed due to not receiving ping) in that case

[9.1.4] - 2025-10-01

Fixed

  • Logs that contain nested error objects are correctly formatted to include message and stack trace

[9.1.3] - 2025-10-01

[9.1.2] - 2025-10-01

Fixed

  • use service and metrics from @signageos/lib instead of custom implementation
  • metrics for all db connections added

[9.1.1] - 2025-09-29

Fixed

  • WebSocket hostname determination doesn't use origin and referer headers anymore because they can be easily spoofed. Only x-forwarded-host and host headers are used now.
  • Database connection for deviceConnection, deviceTimeout and socketRate models to DragonFly
  • Increase limit for device on Applet Dispatch Commands to 5/s instead of 1/s

[9.1.0] - 2025-09-03

Added

  • Include responseQueueName in actions sent from device to platform so that DC can respond directly to the same instance of platform that sent the action. This prevents unnecessary load on all platform instances when only one instance needs to handle the response and especially it reduces the load on RabbitMQ as well as network traffic between services.

[9.0.7] - 2025-08-28

Fixed

  • Fix parsing of env var readiness_max_sockets_count_multiplier

[9.0.6] - 2025-08-28

Fixed

  • Exclude many useless actions that are being enqueued to RabbitMQ but nobody is listening for them
  • Add readiness maxSocketsCountMultiplier for reserved sockets capacity

[9.0.5] - 2025-08-28

[9.0.4] - 2025-08-28

Fixed

  • Exclude action Device.Connected.Status from devices
  • Optimize HTTP socket logic for CPU

[9.0.3] - 2025-04-10

Fixed

  • Kubernetes livenessProbe uses /alive route and is not dependent on external connections

[9.0.2] - 2025-03-28

Fixed

  • mongo 7.0 support

[9.0.1] - 2025-02-06

Fixed

  • Optimized large payload handling in /http-socket/transmit-messages by streaming JSON with stream-json package, preventing memory overflow and PayloadTooLargeError error

[9.0.0] - 2024-10-30

Added

  • Export metrics sos_platform_incoming_messages_bytes_total and sos_platform_outgoing_messages_bytes_total that track how many bytes were sent/received to/from devices

Removed

  • ServerInstance managing and pinging with serverInstanceUid

[8.1.3] - 2024-10-07

Fixed

  • Fixed a bug introduced in 8.1.2 where new devices would get rejected

[8.1.2] - 2024-10-04

Fixed

  • Log even more granular information about device in socket connected/disconnected logs

[8.1.1] - 2024-10-03

Fixed

  • Better logging of device socket disconnection in case of error

[8.1.0] - 2024-09-30

Added

  • Exports max allowed active sockets at the same time as a metric
  • Log all device socket connected/disconnected to stdout

[8.0.6] - 2024-06-05

Fixed

  • Reject devices with duid shorter than 8 characters

[8.0.5] - 2024-04-24

Fixed

  • Throttling actions in the queue (more optimal way)

[8.0.3] - 2024-04-03

Fixed

  • Parse env vars config using the standard lib
  • Prometheus metrics for device connections, incoming and outgoing messages and throttled actions

[8.0.2] - 2024-02-08

Security

  • CVE-2020-7598
  • CVE-2020-7598
  • CVE-2021-44906
  • CVE-2022-25883

[8.0.1] - 2023-12-20

Security

  • Address security issues
  • Upgrade to Node.js 20

[8.0.0] - 2023-11-21

Removed

  • PostgreSQL database

[7.9.3] - 2023-11-16

Fixed

  • BACKUP_RESTART Power Actions API

[7.9.2] - 2023-11-07

Fixed

  • Fetch license validity information from MongoDB instead of Postgres

[7.9.1] - 2023-11-06

Fixed

  • Device connection computes the index for organizations correctly (online/offline status of devices)

[7.9.0] - 2023-04-05

Added

  • Collect number of throttled pending actions per action type
  • Collect number of websocket new connections and disconnections

[7.8.0] - 2023-03-15

Added

  • Collect number of incoming/outgoing messages for each device

[7.7.1] - 2023-02-15

Fixed

  • The actions to device with socketUid target is not expecting response (so they are resolved immediately when rabbit accepts the message)

[7.7.0] - 2023-01-23

Added

  • PodMonitor Kubernetes resource so that Prometheus starts scraping metrics

[7.6.1] - 2023-01-18

Fixed

  • Emulator on /display endpoint with using redirect instead of proxy

[7.6.0] - 2022-11-30

Added

  • Collect number of connected websockets to prometheus

Fixed

  • Emulator serving all static files like serviceWorker.js

[7.5.0] - 2022-11-02

Added

  • Prometheus metrics scraping

Fixed

  • More strict node and npm versions

[7.4.0] - 2022-07-20

Added

  • Ability to throttle certain commands per device

[7.3.0] - 2022-06-29

Added

  • Device connections are stored directly to telemetry

[7.2.1] - 2022-06-01

Fixed

  • Socket device logs contain disconnected code and reason even in cases when the socket was closed by the server

[7.2.0] - 2022-05-30

Added

  • Log device socket connected/disconnected to device logs

Fixed

  • Ensure that websocket closes with frame body that fits in the limit according to websocket spec

[7.1.0] - 2022-03-16

Added

  • Actions monitoring
  • Exclude processing of applet video events
  • Prevent connecting sockets when service is overloaded on memory or number of sockets

[7.0.0] - 2021-10-27

Changed

  • Publishing actions to new exchange with action type as routing key

[6.0.0] - 2021-10-06

Changed

  • Rewrite of AMQP architecture of device actions to dramatically improve performance

[5.0.0] - 2021-09-08

Added

  • Timestamp on actions sent from device
  • Socket rate limiting of connections to platforms (prevent peak traffic to overload services/rabbitmqs)
  • Readiness probe based on number of sockets & used memory

Removed

  • No more used /configuration/* REST API which was moved to configuration-server instead

Fixed

  • Devices are not periodically reconnecting
  • Devices will not end up in invalid socket connections state (not accepting messages)

[4.4.3] - 2021-08-04

Fixed

  • Improved storing data for device connections for fetching purposes
  • Improve device AMQP queues

Removed

  • Configuration endpoint and api, now it is a separate service

[4.4.2] - 2021-07-23

Fixed

  • Performance issues when devices are reconnecting too fast

[4.4.1] - 2021-04-14

Fixed

  • Prevent possible rejecting socket connections when the same by name is already open

[4.4.0] - 2021-04-07

Added

  • Updating last used configuration protocol

[4.3.0] - 2021-03-24

Added

  • Add extendedManagementUrl into device /configuration API

[4.2.0] - 2021-03-17

Added

  • HTTP only support for device connections (instead of WebSocket only connections)

[4.1.2] - 2021-01-13

Fixed

  • Optimize consumption of actions from device (skip some unused actions)

[4.1.1] - 2020-12-30

Fixed

  • Marking device as offline in organization context to fix box devices filter for offline

[4.1.0] - 2020-10-28

Fixed

  • Platform server pings optimization

Added

  • If configuration endpoint fail during SSL handshake the same endpoint will be called without SSL

[4.0.1] - 2020-08-12

Fixed

  • Updated model dependencies, containing the fix of online devices per organization statistics

[4.0.0] - 2020-08-05

Changed

  • Updated model dependencies, device connections redesigned

[3.0.1] - 2020-07-15

Fixed

  • Returns new static url for windows displays

[3.0.0] - 2020-06-09

Changed

  • AMQP library upgraded with an updated schema of device action queue (major incompatible changes)

[2.9.4] - 2020-06-03

Fixed

  • Removed deprecated raven and use sentry instead

[2.9.1] - 2020-01-14

Fixed

  • Fetch device from Postgres to get it's details before registering it to device connections watcher

[2.9.0] - 2019-12-23

Added

  • Use redis connections watcher to track connected devices

Fixed

  • Old dependencies replaced by new from sOS namespace
  • Readability refactoring of configurationAPI and powerActionAPI

[2.8.0] - 2019-11-20

Added

  • Most of the business logic is extracted into a separate device consumer service so platform is now just a lightweight gateway for devices to connect to and the rest is handled in device consumer

[2.7.0] - 2019-10-14

Added

  • Subscription type of device registration based on subscription type of organization

[2.6.0] - 2019-08-28

Added

  • Handling client-side device deprovisioning

Fixed

  • Allow to omit frontAppletVersion in appletVersion

[2.5.3] - 2019-07-23

Fixed

  • Optimize platform server pinging

[2.5.2] - 2019-07-22

Fixed

  • Added platform server pinging (notifying alive servers)

[2.5.0] - 2019-05-29

Added

  • Option to configure priority class in kubernetes
  • Option to configure node affinity in kubernetes
  • Rolling update in kubernetes with configurable parameters

[2.4.0] - 2019-05-08

Added

  • Power action accepts and handle device power action backup restart
  • Add subscription type to device configuration to enable toggle Open/Platform

[2.3.0] - 2019-04-04

Added

  • Servlets - send the list of active servlets to the device when it requests it

[2.2.2] - 2019-03-14

Fixed

  • Possible memory leaks in WebSocket server factory and AMQP consumption

[2.2.1] - 2019-03-11

Fixed

  • This time REALLY the fixed bug with keeping devices with icons (with AMQP double consumption)
  • Major fixes in web socket devices connnection to amqp queues

[2.2.0] - 2019-02-27

Fixed

  • Devices sometimes not receiving actions due to a bug in AMQP consumption logic

Added

  • Server requires license to allow connect devices

[2.1.2] - 2019-02-13

Fixed

  • Device socket error codes wrong range of numbers used
  • If device socket doesn't close even after calling disconnect, terminate it forcefully
  • Applet enable/disable device support

[2.1.1] - 2019-02-01

Fixed

  • Device socket accidently multiple binding

[2.1.0] - 2018-12-16

Added

  • Don't convert applet timing commands to CQRS commands but straight to events to bypass command handler. This is a major optimization for command handler.
  • Don't convert pings to CQRS commands but straight to events to bypass command handler. This is a major optimization for command handler.

[2.0.4] - 2018-11-14

Fixed

  • Updating of IP addresses

[2.0.3] - 2018-11-13

Fixed

  • Supress error when action to device is not delivered correctly (socket is probably terminated)

[2.0.0] - 2018-09-11

Added

  • Dispatching of applet commands to device

Changed

  • External WebSocket (and socket.io) API is in new version called v2. Every new device must be connected to path /v2/ (or /v2/socket.io/) instead of to root which means v1

[1.0.3] - 2018-08-10

Fixed

  • Postponing of device settings actions. Now, it shouldn't happen that some action is not delivered.
  • Weinre debuging of devices

[1.0.0] - 2018-07-09

Added

  • New API for upgrading device firmware version
  • New API for scheduling device power actions

Changed

  • Added new possibility to connect displays over basic WebSocket

[0.36.3] - 2018-06-20

Fixed

  • Fixed /display emmulators for new version of default app 2.3.0+

[0.36.1] - 2018-06-08

Fixed

  • Fixed typo in set video orientation action sent to the device, that prevented explicit video orientation being set at all.

[0.36.0] - 2018-06-05

Added

  • Set explicit video orientation different from screen orientation

[0.35.2] - 2018-05-24

Fixed

  • Downgraded socket.io library to fix repetable reconnecting of devices
  • Disallow banned devices to connect a server

[0.35.0] - 2018-05-11

Added

  • Changelog file containing all changes in current project
  • Devices will not show the invalid verification hash for short time until valid one come