A member's mail goes out under their name, not a bare address
The From header carried a name only when the request did, and the composer sends the mailbox's display_name: set for an SI's mailbox when it is made, blank on a...
Ai-lines names the number a missed call can be returned to
Each line of /ai-lines?orgId= carries callbackNumber: the SI's own line, else a number assigned to it, else its phone server's main number, else the org's only ...
The editor offers JOIN_MEETING, so an organization can set its own rule for an SI joining meetings
Owner 2026-10-14: joining one of the organization's meetings is its own action class (shared-lib 2d2f2efd), not PLACE_CALL. ACTION_CLASSES lists it after the tw...
Meetings_join is JOIN_MEETING, not PLACE_CALL, and an unnamed JOIN_MEETING does not ask
Owner 2026-10-14: Luna (crm) asked the owner to approve joining a meeting he had told her to join; meetings_join was classed PLACE_CALL, so the charter's "Placi...
Carry website visitors' Live Support files through the gateway
- POST **************** the multipart "files" parts are re-sent to MediaService as a fresh multipart body, streamed from the container's spooled copies (the...
Website visitors can attach files in Live Support — safe types only
A visitor on a lender's website can now send documents, images, zips and ordinary audio/video to the agent in the Live Support tab, and read back both their own...
Postfix takes the name mail.kamouniverse.com once it resolves here
kamouniverse.com is the platform's sending domain, but the server still introduced itself as mail.kamocrm.com in its EHLO, Received headers and bounces. Postfix...
JOIN_MEETING, joining one of the organization's meetings, is its own action class and not PLACE_CALL
Owner 2026-10-14: Luna (crm) asked the owner to approve joining the meeting he had just told her to join. meetings_join was classed PLACE_CALL, so the charter's...
Picking a non-default alias domain From no longer fails the send
Every alias-domain row in the From picker is the member's primary mailbox under another domain, but only the default one was mapped to a primary From. Any other...
Typed remote-monitoring client and the pure progress, limit and refusal rules
Mirror the three remote-monitoring rights and gate the RPM_ALERT kind
An alias-domain From row names the mailbox behind it
The From picker offers the member's primary mailbox again on each org alias domain, with an id like <mailbox>:alias-domain:<domain> to keep it unique in the lis...
Serve Tesla's partner key path and exempt it from access rules (IoT SP08-D2)
GET **************** forwards sessionless (identity headers and Authorization dropped) to IoTService **************** the exact path (container- normalised) is ...
Mirror the honest default Live Support welcome
Matches kamo-shared-library a82f3c78: the team is notified only once the visitor sends a message, so the default no longer says someone will be with them shortl...
The default Live Support welcome no longer promises someone 'shortly'
Nobody on the team is notified until the visitor sends their first message, so the default now says that: send a message to reach the team, they're notified whe...
Send the chosen From even when it is the primary row
The default org alias domain (kamouniverse.com) is offered in the From picker as the member's primary, and the composer left any primary From off the request. W...
CreateClaim writes charge and units, sets the claim total, refuses a blank payer
Meetings_join is "Join a meeting", not a phone call, and a meeting's link is joined as the room it names
Owner, 2026-10-14: SIs asked to join a meeting answered that they could not "join by phone" because "there's no dial-in", and asked for a room with dial-in enab...
An SI's own join (M1) carries the meeting's dial-in, for when it cannot be put straight into the room
2026-10-14: SIs asked to join a meeting told people "there's no dial-in" and asked for another way in. kamoai-service now picks the way in itself: straight into...
SP12 health enums, entities, repositories and monitoring-state derivation
An SI acts on the request its run was woken by without having to cite it, and K3 hears the tool's rights so a colleague who may do it themselves can direct it
Owner 2026-10-14: Luna (crm) asked the owner to approve joining the meeting he had just told her to join. Evidence: run 47cc1908 (NEW_CHAT, woken by his message...
SP12 pure vitals mapping — LOINC/UCUM, unit conversion, plausibility, opaque Validic uid
SP12 Observation source columns, FHIR device and tag, remote-reading queries
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.
SP12 enum appends — PhiAccessKind.CREATE, RPM_ENROLLMENT, three EHR rights, RPM_ALERT
SubscribeQueueBatch binds a WorkQueue stream with DeliverPolicy.All
IOT_EVENTS is a WorkQueue stream (IoT SP00-D6) and NATS refuses any other deliver policy there (10101), so iot-service crashlooped at boot. The policy is read f...
A resume whose bytes are already stored records the key they were stored under
Same rule as the other content-addressed attach paths (shared library abaec95b): fileExt is part of the storage key, so a resume already held under another name...
Every attachment of stored content records the key it was stored under, via the library
The chat-only StoredContentExtension (299a911) becomes ImageService.storageExtension in the shared library, and the other MediaService paths that attach content...
An Img keeps the extension its content is stored under — on dedup and on rename
fileExt is part of the storage key (<imgDatId>.<ext>) every reader builds, but dedup matches on the BYTES. Content already held arriving under another name (a ....
The lit Settings row follows the page's own tab
The rail lit the row the member last clicked, so switching tabs inside a settings page (Docs -> General from the page's tab strip) left the light on the old row...
Label nav and settings entries "Devices (IoT)" (owner, master R5) [skip ci]
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 da...
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, pa...
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).
Append STREAM_OPENED, STREAM_CLOSED, STREAM_REFUSED activity kinds
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.
Task 16 ledger completeness (both test orgs) and Task 17 Luna untouched
Task 16 (A15): sp00verify complete (gatedCalls 74 = eventsMatched 74; outsideToolPlane ESCALATE 12, SEND 7; 51 SI chat lines paired 1:1 with their events, 44 To...
SP01 enums, safety rules, command transitions, event ids, geohash, device-type rank
IoT SP01 Task 2, on SP02's vocabulary and catalogue (a2cc3154, 36cc42b6).
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.
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 c...
The SP01 IoT entities map on Hibernate 6.2.13, the line SecurityService runs
IoT SP01 Task 7 (mapping half). EmbeddedAttributeMapping is not in org.hibernate.metamodel.mapping on 6.2; the test reads the address through EmbeddableValuedMo...
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
