Changelog
What's new.
Every improvement to the platform, as it ships.
· kamo-shared-library
SP03 grant entities, repositories and activity kinds
· kamo-shared-library
SP03 class selectors and grant rules (incl. Alexa voice rules)
· kamo-shared-library
SP03 grant enums, device type rank and catalogue lookup
IotDeviceType (SP01's copy) gains HEALTH_VITALS, storedType and a position map; SP01's tests are kept beside SP03's.
· kamo-shared-library
SP12 enum appends — PhiAccessKind.CREATE, RPM_ENROLLMENT, three EHR rights, RPM_ALERT
· KlusterServices
Scrape kamowsiot-service on /actuator/prometheus
IoT SP01 Task 34: the kamo-actuator job keeps kamowsiot-service beside kamowssecurity-service, so the four IoT alerts (iot-service's own PrometheusRule) have data. monitoring/ is not a CI apply target.
· DaemonService
Daemon jobs for the IoTService tick (every 60 s) and nightly retention purge
IoT SP01 Task 30. Landed after SP02's 75007b2, which already mounts iot-internal-auth, sets iot.service.url and creates IotJobClient with a generic post(job, path, readTimeoutMs): kept SP02's client and added tick() and purge() over its post (read timeouts 55 s and 900 s); the Secret is mounted once and the URL set once.
· MediaService
Network-backed STOMP authorisation, subscription registry and revocation for the IoT topics
IoT SP01 Task 33. k8s/deployment.yaml gains the iot-internal-auth envFrom (after mlos-internal-auth): origin/main did not mount it yet (Step 1 gate fallback).
· kamo-shared-library
Append STREAM_OPENED, STREAM_CLOSED, STREAM_REFUSED activity kinds
· MediaService
Iot.live.> to STOMP relay and the static guards for the IoT topics
IoT SP01 Task 32. The IoT SEND refusals sit just above the voicemail comment so that comment stays attached to its own line.
· kamo-internal
IoT connectors section on the platform Advanced tab
· DaemonService
DaemonService ticks the IoT connection checks every 10 minutes
· SecurityService
The seven IoT registry rows are managed on the IoT connectors card
· kamo-shared-library
SP01 enums, safety rules, command transitions, event ids, geohash, device-type rank
IoT SP01 Task 2, on SP02's vocabulary and catalogue (a2cc3154, 36cc42b6).
· kamo-shared-library
SP01 value columns, org settings, connection, site, space entities and repositories
IoT SP01 Task 3. A whole number reads back at scale 0 (210, not 210.0) so a stored value round-trips equal.
· kamo-shared-library
SP01 device, function, state, activity and write-once command entities
IoT SP01 Task 4. IotDevice.providerDeviceType is the provider's suggested primary capability KEY (String): SP02 ships no device-type enum and DiscoveredDevice carries primaryCapability (SP02 reconciliation 1). The WORM guard test asserts the IllegalStateException itself (the guards throw it directly, with no cause).
· kamo-shared-library
SP02 entities and repositories
· SecurityService
Verify-password records a session re-check marker and limits wrong attempts
IoT SP01 Task 7 (marker half). KREAUTH<***Id> = member id for 3600 s after a correct password; five wrong passwords per session in 15 minutes answer 429 too_many_attempts without checking. The plan's test named its helper verify(...), shadowing Mockito.verify; renamed to check(...).
· kamo-shared-library
Capability catalogue v1 with a pinned JSON snapshot
· kamo-shared-library
Provider vocabulary, registry types 18-24 and the IoT callback path
· kamo-shared-library
ReauthMarkers and **************** (delayed naks, exhausted callback)
IoT SP01 Task 5. The plan's test used AssertJ fail() without importing it; import added.
· kamo-internal
The eight IoT kinds — gated like EmailService with the owner rule, one order, their own marks (IoT SP00)
· kamo-internal
The /api/iot BFF route; a guard that every notification kind has its label and hint (IoT SP00)
· kamo-internal
IotRights.ts, the browser mirror of IotRights, parity-checked against the Java set (IoT SP00)
· kamo-internal
The IoT Devices rights mirrored, their tree, and the IoT Devices permission group (IoT SP00)
· kamo-internal
IoT Devices in the app mirrors, Organization.isIot and its app icon (IoT SP00)
· APIService
IoT vendor deliveries are not judged by an organization's IP and country rules (IoT SP00-D5)
· APIService
Forward /api/iot/** to IoTService; internal subtree 404; raw, credential-free forwards for hooks, alexa and public (IoT SP00)
· InitializerService
IoT Devices in every paid plan, never Free; scan com.kamo.z.shared.iot (IoT SP00)
· EmailService
Gate the eight IoT kinds on their rights with the owner rule, in one display order (IoT SP00)
· SecurityService
Seed the IoT administration rights to CONFIGURE_SYSTEM holders on the boot that introduces them (IoT SP00)
The IoT tour needs no lineage: every Show Tour right is already on for every role (fefd98c2).

Your universe is waiting.
Start free in minutes. Add products whenever you are ready — no migration, no new logins.
Free forever — no credit card required