Skip to Content
ReferenceChangelog

Changelog

Version history and release notes for ModularIoT.

Version Format

We follow semantic versioning: MAJOR.MINOR.PATCH

  • MAJOR - Breaking changes
  • MINOR - New features, backward compatible
  • PATCH - Bug fixes, backward compatible

Upcoming

Features and improvements in development:

  • JavaScript, Python, and Java SDKs
  • Advanced symptom patterns
  • Enhanced notification channels
  • Historical analytics dashboard

Recent Releases

miot-calendar-client v0.8.0 — Time Window Blocks (2026-05-02)

@microboxlabs/miot-calendar-clientnpm  | GitHub 

Adds typed support for distinguishing normal bookable time windows from non-bookable blocks.

Updated — client.calendars:

  • calendars.createTimeWindow() and calendars.updateTimeWindow() accept TimeWindowRequest.kind?: TimeWindowKind — use WINDOW for bookable capacity or BLOCK for closures
  • TimeWindowResponse.kind: TimeWindowKind — responses now identify whether each time window is a bookable window or a block

New types exported: TimeWindowKind


miot-calendar-client v0.7.0 — Time Window Colors (2026-05-02)

@microboxlabs/miot-calendar-clientnpm  | GitHub 

Adds a time-window color field so planning UIs can persist and render calendar color selections through the API.

Updated — client.calendars:

  • TimeWindowRequest.color?: string — optional UI color token when creating or updating a time window
  • TimeWindowResponse.color?: string — optional UI color token returned with time-window data

miot-calendar-client v0.6.0 — Calendar Task Filters (2026-05-02)

@microboxlabs/miot-calendar-clientnpm  | GitHub 

Adds calendar-level task filters and exposes SlotManager provisioning metadata for calendar configuration screens.

Updated — client.calendars:

  • CalendarRequest.filter?: CalendarFilter — persist task filters such as origin and destination on a calendar
  • CalendarRequest.autoSlotManager?: boolean — request default SlotManager provisioning when creating a calendar
  • CalendarResponse.filter?: CalendarFilter — read the persisted task filter from calendar responses
  • CalendarResponse.hasSlotManager?: boolean — check whether a calendar has a SlotManager provisioned

New types exported: CalendarFilter


miot-calendar-client v0.3.0 — Slot Managers (2026-02-20)

@microboxlabs/miot-calendar-clientnpm  | GitHub 

Adds a new Slot Managers resource for automating slot generation. Each manager keeps slots generated a configurable number of days in advance and can be triggered manually or by an external scheduler.

New — client.slotManagers namespace:

  • slotManagers.list({ active? }) — list all slot managers
  • slotManagers.create(body) — create a slot manager for a calendar
  • slotManagers.get(id) — get a slot manager by ID
  • slotManagers.update(id, body) — update configuration (including one-shot reprocessing)
  • slotManagers.deactivate(id) — soft-delete a slot manager
  • slotManagers.runAll() — trigger all active managers synchronously
  • slotManagers.run(id) — trigger a single manager
  • slotManagers.listAllRuns({ limit? }) — list recent runs across all managers
  • slotManagers.listRuns(id, { limit? }) — list runs for a specific manager

New types exported: SlotManagerRequest, SlotManagerResponse, SlotManagerRunResponse


miot-calendar-client v0.2.0 — Calendar Groups (2026-02-19)

@microboxlabs/miot-calendar-clientnpm  | GitHub 

Adds a new Calendar Groups resource that lets you organize calendars into named collections and filter or query them by group.

New — client.groups namespace:

  • groups.list({ active? }) — list all groups
  • groups.get(id) — get a group by ID
  • groups.create(body) — create a group
  • groups.update(id, body) — update a group
  • groups.deactivate(id) — soft-delete a group

Updated — client.calendars:

  • calendars.list() accepts a new groupCode query param to filter calendars by group membership
  • CalendarRequest.groups?: string[] — assign groups on create/update (null = no change, [] = remove all, ["code"] = replace all)
  • CalendarResponse.groups?: CalendarGroupResponse[] — groups the calendar belongs to are now included in the response

New types exported: CalendarGroupRequest, CalendarGroupResponse


Architecture: Centralized Sidebar Navigation (2026-02-19)

apps/app — internal change, no API impact

The sidebar navigation was refactored to use a single shared SidebarNavigationProvider context above both the desktop and mobile sidebar components.

What changed for operators:

  • Badge counts on the desktop and mobile sidebar are now guaranteed to be identical — previously they could diverge because each sidebar fetched data independently
  • User filter items under the Tasks section no longer duplicate after navigating between pages

What changed for developers:

  • All navigation data (badge counts, dynamic task filter items) is fetched once per page load instead of twice
  • The pages.ts module constant is no longer mutated at runtime
  • New sections with dynamic sub-items can be added via dynamicItemsSource + a dedicated hook — see Extending Navigation

See ADR-001 for the full decision record.


v1.0.0 (Coming Soon)

Initial public release.

Features:

  • Core telemetry ingestion
  • Canonical metrics processing
  • Basic symptom detection
  • Control Tower dashboard
  • REST API v1
  • Multi-tenant support

Known Limitations:

  • SDKs not yet available
  • Limited symptom patterns
  • Basic notification channels

Release Process

  • Beta releases - Available to early access customers
  • Minor releases - Bi-weekly on Tuesdays
  • Major releases - Quarterly

Breaking Changes

Breaking changes are announced:

  • 30 days advance notice minimum
  • Migration guides provided
  • Deprecation warnings in API

Feedback

Report issues and request features through your account representative or the support portal.

Last updated on