KOS Release 1.8

KOS Release Notes are official documents published with each new version of the KOS platform and its tools, including KOS Studio. They provide a clear summary of all changes delivered in a specific release.

Release Notes are essential for anyone working with the KOS ecosystem—developers, integrators, partners, and business stakeholders—because they help users quickly understand:

  • New Features: Highlights of new capabilities or tools added to the platform.
  • Enhancements: Enhancements to existing features, performance optimizations, or user experience updates.
  • Resolved Issues: Issues resolved from previous versions, helping teams track reliability improvements.
  • Breaking Changes: Changes that may affect backward compatibility or require adjustments to existing projects.
  • Known Issues: Current limitations or defects that users should be aware of, often with workarounds or planned fixes.

For developers and technical teams, KOS Release Notes are an essential guide for planning upgrades, testing new features, and ensuring ongoing compatibility in projects built on the KOS smart dispense operating system.

Java Docs


KOS Release v1.8.7

Aug 28, 2026

Resolved Issues

  • Fixed NNS Remnant on Flex I/O Board.

KOS Release v1.8.6

Jul 15, 2026

Resolved Issues

  • Fixed issue with replace line functionality where the ingredient was still persisted as the previous ingredient for the holder.

KOS Release v1.8.5

May 5, 2026

Enhancements

  • General logging improvements.

KOS Release v1.8.4

Jan 30, 2026

Resolved Issues

  • Fixed firmware bug causing critical data read/writes to fail when FCM/MSV are not connected

KOS Release v1.8.3

Jan 28, 2026

Enhancements

  • Updated MSV firmware now enables self-updating.

Resolved Issues

  • A bootloader bug fix that cause firmware update failures, typically on application updates
  • Bootloader bug fix that allows for invalid IP address when self generating IP address before initiating the network stack

KOS Release v1.8.2

Nov 17, 2025

Enhancements

  • Rfid scanner now checks if the antenna is paused after all reads, but before processing the results. This addresses a possible race condition where pausing reads mid-cycle can result in inconsistent RSSI processing.
  • Agitation trackers now clear InsufficientAgitationTroubles during transitions to any state other than mandatory which protects against future bugs similar to the agitation filter bug above.
  • Cartridge agitator state bean now tracks when agitation is requested, which provides an event that can be used for agitation / rfid interlocks.
  • RFID iface now tracks read errors and will restart the rfid adapter after a configured number of errors as a means of resetting the RFID hardware.

Resolved Issues

  • Fixed issue with agitation filter creating an InsufficientAgitationTrouble when an insertion occurs during advisory or maintenance agitation cycles.

KOS Release v1.8.1

Oct 14, 2025

Enhancements

  • Changed method signature for Pump.getIntent() to remove the pump argument.
  • Freestyle extension now allows sanitizer to be installed in multiple slots without restrictions.
  • Improved logging in CANPumpMgr.
  • Added MSV 11.10.1 firmware version.
  • Improved handling for turning on display output at startup
  • Improved boot log handling
  • Added Xorg logs
  • Screen output at startup for no valid KMF

Resolved Issues

  • Handle exception when there is no ice agitator but the hardware still sends events.
  • Avoid potential errors when FCM data is logged to analytics but the hardware isn’t ready.
  • Fixed bug in AdjustableCallback that can prevent recurring callbacks when using day relative times.

KOS Release v1.8.0

Aug 14, 2025

New Features

  • Addition of RemoteNnsTray support, which allows mapping a flex super pump from a cartridge slot to an external BiB tray. Enabling a remote tray adds altTypes to both the super pump and child pumps (remoteMicroSuper and remoteMicro, respectively) to allow alternate pump intent definitions while the remote tray is enabled. This will require new pump intents, so please get in touch with Fluidics for specifics for your device.
  • New cartridge agitation sub-system supporting per-cartridge agitation tracking to minimize startup time. This has new configuration settings which default to reasonable values for tower-based animation. Consider updating values in freestyle.xml config override files if applicable.
  • Support for layered recipes in the Freestyle extension.
  • Multi-part file upload support via the HttpParts in HttpRequest.
  • Micro pump field calibration support, allowing micro pumps to be calibrated with a graduated cylinder.
  • Micro pump calibration history tracks every time micro pump calibrations are changed, along with values and the source of the change.
  • Added FIRMWARE type to KabType to standardize firmware packaging.
  • Initial support for remote logging over blink connections, primarily for use with embedded platforms or adapters.
  • Support for low level serial configuration while performing serial probing.
  • Pump now contains an altType property which is used to resolve intents before the pump type, allowing pumps to be mapped to different intents on the fly based on changing conditions of the pump.
  • In 1.9.x, FutureWork will will automatically call success() if the associated FutureRunnable completes without throwing an exception, eliminating the need to call success() manually in most cases. For futures that extend beyond the end of the runnable, it will be required to call future.extend() to indicate that the future should not auto-complete. The extend() api is now available and should be integrated into existing code as needed in preparation for 1.9.x.

Enhancements

  • MimeTypeResolver interface for adding custom mime type resolution for serving content from vfs or KAB files.
  • Additional default mime types
  • Added CANModelMgr to Freestyle extension to replace board/model enums, allowing for dynamic definition of new boards to facilitate prototyping.
  • BinaryMsgIface is now activated after the constructor returns to eliminate race conditions between the constructor and lifecycle callbacks to the iface.
  • Invalid address handler for closing log viewer subscriptions which removes recurring messages from the java log.
  • Access to AnalyticsService via KosCore static accessor to make analytic logging more convenient.
  • Support for beverage availability node properties to attach metadata to availability graph data.
  • Beverages are added to brands as optional nodes in the beverage graph to prevent missing beverages from throwing exceptions. Fixes issue using brandset grants.
  • Beverage availability nodes now support properties to allow binding of additional user data.
  • Removed AnalyticsClient from sdk as this should be accessed via AnalyticsService interface.
  • Removed AnalyticsService methods from AnalyticsServer in the sdk as these should be accessed via the AnalyticsService interface.
  • Added bounceInsteadOfReboot config option for OTA to allow for bouncing, which only restarts user space if no layers were changed.
  • NozzleMetricsAction is now an interface.
  • addBoard() is no longer required in an Assembly. The board is automatically added via the Board constructor. It is safe to call addBoard(), but it is not required.
  • BevearagePourEngine now takes BeveragePourSequence as an argument to buildFuture(). This allows engines to understand the context of the pour within the overall sequence.
  • BoardUnLinkedException removed to use more generic NotLinkedException.
  • Added IfaceAware, IfaceAwareService and IfaceAwareBoard to simplify the process of linking blink ifaces to services and boards.
  • Added endpoints to stop a beverage pour to the BeverageNozzlePipeline. These can be used instead of cancelling the pour future via the future endpoint.
  • Moved check for empty pours from FreestylePourEngine to beverage pipeline.
  • Replaced BeveragePumpIndicator with direct calls to startPump() in BeveragePourEngine to allow engines to generate multi-step pours from a single Pourable.
  • Improved websocket timeout detection for disconnected hosts.
  • Pause now supports inline callbacks in pause() and resume() methods, allowing local state to be used in callbacks without requiring global event handlers.
  • BeveragePourBuilder now uses an interruptable delay for split pours so that it properly ends the pour when cancelled during the delay.
  • Added sleep() and interruptableSleep() to FutureWork as convenience methods.
  • CartridgeAgitator constructor now takes the board, not the subnode on the board.
  • FuseLogger now supports rate limiting and currently limits logs to 100k/sec log rates. If a log exceeds this rate, a throttle entry is entered into the log and logging is blocked until the end of the current second. An entry is also created in syslog to record the throttle event.