Skip to content
KAMOUniverse

Changelog

What's new.

Every improvement to the platform, as it ships.

  1. · kamo-internal

    The SI Assistant is called by the member's name for it, everywhere it is labelled

    Owner change 2026-10-28: the nav item, the window title (title bar, tab, taskbar head) and the window header say "SI Assistant" while the assistant has the default name, and the name the member gave it once one is set in its settings; the tooltip reads "Personal SI Assistant (<name>)". A saved name relabels every open place at once (one settings snapshot per page). The conversation's own title moves under the name in the header, still click to rename (a rename now shows there at once).

  2. · kamo-internal

    The owner's bill pill on the launchpad, and /billing

    A pill left of the storage meter, for organization owners only, saying whether the organization's bill from the platform is paid, due or overdue. Calm when paid; amber and breathing when due; red, pulsing and shuddering every six seconds when overdue. All motion stops under reduced motion. Hover opens a flyout built like the storage meter's: amount and when, the open bills, the next bill estimate, the plan line, Pay online, View bill. Click goes to /billing: state-aware hero with a counting balance, four figures, the current bill(s) with lines, totals and payments, the next bill estimate with scheduled seat changes, the plan and add-ons, how to pay by bank (QuoteRemittanceBlock), past bills with a chart, PDF and card payment, a thank-you banner on return, and a friendly owner-only notice. Reads GET /api/security/pos/my-billing (+ /invoices/{uid}/pdf, /pay).

  3. · SecurityService

    My Bill — an organization owner's own bill from the seller's ledger

    GET /api/security/pos/my-billing answers the owner's state (current, due, overdue), open invoices, the estimated next renewal, past invoices, the seller's remittance details and the card on file. Owners can download each invoice's PDF and pay an open one by card, returning to /billing. Owner only, scoped to the session organization; drafts and voids never show.

  4. · kamo-shared-library

    Estimate the next renewal, and find an organization's own subscriptions

    For the customer-facing My Bill page: the next renewal as it would be raised today (never saved), and the subscriptions an organization is the target of.

  5. · MediaService

    A kicked SI is out for good, the sweep's dials say they are automatic, and the SI's own picture rides to its tile (TPENGAGE)

    - DELETE **************** a signed-in person in the meeting kicks an SI out (Prosody never lets anyone kick the SI's Jigasi leg, it is a server admin); REMOVED first, then KM6 KICKED - KM2 from the auto-join sweep carries automatic=true, so kamoai-service can refuse it after a leave or kick - I3 carries siAvatarUrl (photo, picked avatar, else none = initials) for the SI's meeting tile; the invite panel's present SIs carry their picture too

  6. · kamo-internal

    The decision trail shows the SI decision it asks a person to judge

    The trail's header said decision details were "coming soon", so a reviewer confirmed, modified or overrode a decision they could not see. It now shows what the SI decided and why, its confidence, what it was about and at which stage, whether the SI acted or sent it to a person, who decided (a rule or a model), when, and a link to the loan. A "modify" verdict no longer asks for JSON: the reviewer writes the right decision in words, stored as {"correctedDecision": …} and shown back in the trail as a labelled field.

  7. · SecurityService

    Read one SI decision for its review trail

    GET **************** what the SI decided, why, how sure it was, the stage and function, the gate's result, and the loan it is on — only for a decision on one of the caller's organization's loans (decision → loan file → application → org, the governance service's own chain); another org's or an unknown id is the same 404. The decision trail never showed the decision it asks a reviewer to judge. The controller's gate is renamed requireSessionAsOperator so the endpoint ratchet recognises it, retiring its 7 baseline entries.

  8. · SecurityService

    Name loans by borrower and loan number from their loan-file ids

    GET **************** (at most 200): borrower name and loan number (the application id) for each, staff only, own-loans aware. For the consoles that only hold loan-file ids (closing packages, the clearability roll-up), which were printing a truncated internal id instead of the loan.

  9. · kamo-internal

    Pick a loan by borrower or loan number, never by typing an internal id

    The underwriting console's income, fraud/4506-C and large-deposit tools and the documents console asked staff to type a "Loan file UID" or a "Mortgage application UID". MortgageLoanPicker searches as you type (borrower name or loan number, server-side and bounded), shows the borrower with the full loan number and status, and loads the tool on pick.

  10. · SecurityService

    Find a loan by borrower name or loan number

    GET **************** — up to 20 (max 50) of the org's applications whose loan number starts with the digits typed or whose borrower's first, last or preferred name contains the text, newest first. Staff only; a member who works only their own loans finds only those. Two bounded queries (ids, then the summaries), compiled on the fleet's Hibernate. For the console loan picker, so nobody has to type an internal id — and so a picker never pulls a whole pipeline.

  11. · kamo-internal

    "Track adverse action deadlines" on the Automation tab

  12. · SecurityService

    A person's denial starts the ECOA notice clock, when the lender tracks it

    Only an automated-underwriting decoder armed the 30-day adverse-action clock, so a loan a person denied in Kamo never showed a notice owed on the Adverse Action report. AdverseActionClock now arms the same timer after a person's move through the pipeline to Denied, Closed for Incompleteness or Pre-Approval Denied — only while the lender has LOAN_ADVERSE_ACTION_CLOCK on (owner, 2026-10-28; off by default), never for an outcome synced from another system, once per live clock, and never failing the move. Tracking only; nothing is sent. Written through the EntityManager (SecurityService does not register the compliance repositories); its query is compiled on the fleet's Hibernate.

  13. · kamo-shared-library

    LOAN_ADVERSE_ACTION_CLOCK — the ECOA notice clock for person-made denials is the lender's switch

    Owner 2026-10-28: tracking the 30-day adverse-action notice for a loan a person denies in Kamo is one of the automation settings, off by default.

  14. · kamo-internal

    Bring a terminated SI back by setting its status to Active (TPSIREHIRE)

    - A terminated SI's status is editable again; Active ('Brings this SI back') is confirmed first: the same SI, its history, personality, job description, memory, settings and photo; what happens to its seat (free, none yet so it waits paused, or not billed); a new sign-in; tasks stay with its manager; and 'Give it its phone line again' (checked when it had one). - The save sends rehirePhoneLine; SecurityService's siRehired answer becomes a plain message (back, waiting for a seat, line being set up on extension N). - The terminate confirm no longer says it can't be undone: it says the SI can be brought back by setting it to Active, and to pause it for a while instead. - AI_REHIRED in the access-log vocabulary.

  15. · kamo-shared-library

    Bounded loan-file queries — the working pipeline and a per-status count

    **************** (unarchived, in the given statuses) and countByStatusForOrganization (GROUP BY in the database), for callers that used findByOrganizationId to load every loan an org ever had (Harmony: 10,473, about sixty in progress) and keep a handful. Both compile against the mapping **************** SecurityService proves them on the fleet's Hibernate 6.2.

  16. · kamo-internal

    Google Home section beside Alexa, and Google links on the profile card

    Settings -> Devices (IoT) -> Connections gains a Google Home section (GET /api/iot/voice/google; not enabled or missing = a calm coming-soon card with the test-accounts-only line). The organization's links come from the same V1 list filtered by assistant (absent = ALEXA); the Alexa section now shows only Alexa links. The shared link dialog speaks of Google for a GOOGLE link, hides the update channel and virtual sensors, and its sync reads "Ask Google to refresh the device list". How to link, Try it from the link's tryIt, the voice PIN for locks/garage/alarms, and Kamo Alerts. Profile -> Voice assistants shows an Alexa / Google Home badge per link and how to link your own Google Home.

  17. · VOIPService

    A re-hired SI gets its old extension back when it is still free (TPSIREHIRE)

    Re-provisioning a RETIRED line on the same phone server prefers the line's previous extension when nobody has taken it since; otherwise the next free one in the range, as before.

  18. · SecurityService

    The KamoUniverse Assistant skill's client always makes a personal Alexa link

    A second Alexa skill (custom only, so Alexa voice profiles work) links through Kamo OAuth client iot.alexa.assistant (same IOT_ALEXA purpose, same vendor redirect URIs; seeded by hand, **************** Its consent decision is forced server-side to ownerKind MEMBER, no site, grantChoice preset NONE and no Kamo Alert sensor, whatever the page sent. Other clients unchanged.

  19. · MCPGatewayService

    MLOS tool writes carry the approval they run on

    So SecurityService can tell a person's approval or order from an SI's own initiative, which the lender may have switched off (LOAN_SI_CHANGES).

  20. · kamo-internal

    "What Kamo does on its own" — the lender's automation switches on the Automation tab

    One switch per message and loan change Kamo can make by itself, in three groups (messages to borrowers, messages to your team, changes to loans), each off until the lender turns it on, with turn-all per group, when each was last changed, and which also need Kamo to enable the capability. Switches use the organization's brand colour; the shared Discard button reads at AA contrast.

  21. · SecurityService

    Every automatic MLOS email and loan change waits for the lender's switch

    A lender running its loans in another loan origination system (Harmony with Arive) must not have Kamo writing to its borrowers or changing its loans on top of that system. Each automatic action now asks MlosAutomation first and is skipped, with a log line, while off — and every action is off until the lender turns it on: - document emails (request, reminder, accepted/rejected, all received, loan officer "ready for review"); the reminder sweep no longer stamps a nudge it did not send - the online application receipt and "meet your loan officer" - building the document checklist at Application Taken, on submit, and the rebuild that ran on every READ of a loan's document list - an SI's own-initiative change under /mortgage-apps (new MlosSiInitiativeInterceptor): a change a person approved or ordered carries X-Kamo-Approval-Id from the tool plane and always passes Settings: GET/PUT **************** audited in the config change log. The controller's gate is renamed requireSessionWithManageRight so the endpoint-safety ratchet recognises it, which retires its 50 baseline entries.

  22. · kamo-shared-library

    Automation switches — every action Kamo takes on its own is the lender's choice, off by default

    MlosAutomationAction lists each message and loan change the MLOS makes without a person choosing it (borrower emails, team alerts, checklist building, document refresh, underwriting conditions, autonomous locks, e-closing dispatch, an SI's own-initiative loan changes). MlosAutomationSetting stores one organization's choice per action (mlos_automation_setting, created by hand); no row means off. MlosAutomation.isEnabled is a static helper over the caller's own EntityManager, so every MLOS service can ask without a shared component needing a repository it does not scan. Anything unreadable answers off.

  23. · SecurityService

    A terminated SI set back to Active is re-hired as the same SI (TPSIREHIRE)

    Owner 2026-10-28: terminated SIs are re-activatable like people. Active on a terminated SI's status now runs AiLifecycleService.rehire after the rest of the save, in its own transaction (rights: Manage SI Workforce plus the status's MANAGE_MEMBER_SECURITY; an SI never re-hires itself): - same member, history, charter, personality, memory, settings and avatar; - employment ACTIVE and ai_state ACTIVE by a guarded UPDATE out of RETIRED; - a seat claimed when one is free; with none, the SI is Active but paused 'Waiting for a seat', listed as a licensee, and resumed by the entitlements MEMBER message once a seat is assigned (a manual Resume is refused until then); - hire steps reopened: RUNTIME_ENROLL again (new credential and session from the runtime), unfinished MANAGER/MAILBOX/BRIEF, the phone line when asked (default: when it had one), a missing workstation left for Set up now; kept workstations get Keep, which cancels a pending deletion; - tasks handed to the supervisor stay there; a second retire hands the new ones off again (TASK_HANDOFF upserted back to PENDING); - audited AI_REHIRED (both directions are now audited), announced, rights recalculated; no welcome email, no sign-out of the re-hired SI. Other statuses on a terminated SI are refused in plain words.

  24. · kamo-shared-library

    AI_REHIRED access-log event for a terminated SI set back to Active (TPSIREHIRE)

    Appended last: event_type is VARCHAR(30), STRING-persisted, with no CHECK, so no DDL.

  25. · kamo-login

    Consent for Google Home — every sentence names the assistant being linked

    The iot.google client (purpose IOT_GOOGLE) gets its own wording: "Link Kamo to Google Home", "What can Google Home use?", default link names "Google Home" / "<First>'s Google Home", the Kamo voice PIN for unlocking, opening and disarming, and a Try it card ("Hey Google, turn on <device>", "Hey Google, sync my devices"). No Kamo Alert sensors or SI Assistant promise for Google. Alexa wording is unchanged; screens that cannot know the client say Alexa or Google Home.

  26. · SecurityService

    Google Home account linking — an IOT_GOOGLE principal provider and Google's redirect URIs

    IOT_GOOGLE is the Alexa voice-link provider with assistant GOOGLE on I-A1/I-A2 (one link table in IoTService). The client admin takes a Google Cloud project id as the vendor id and writes Google's production and sandbox redirects. The consent view now names the client's purpose so the page can word Google Home or Alexa.

  27. · MCPGatewayService

    Notifications_list today:true counts what arrived today in the owner's zone

    TPONBEHALF live check (sp00verify 2026-10-28 07:27Z): asked "how many notifications did I get today?", the SI read the member's own account correctly (on behalf, audited) but answered with the total (12) when none had arrived today. today:true counts, read or not, every notification since midnight in the caller's own zone (the member's when the SI acts on their account): receivedToday, todayStartsAt, timeZone. Tool-list snapshots updated deliberately for this one tool.

  28. · kamo-shared-library

    One voice-link model for Alexa and Google Home (assistant column, IOT_GOOGLE OAuth client purpose)

    iot_alexa_links.assistant = ALEXA | GOOGLE (applied by hand from iot-service **************** default ALEXA) and the OAuth client purpose IOT_GOOGLE for "Works with Google Home" account linking, whose grants name the same VOICE_LINK principal.

  29. · kamo-internal

    Done on your behalf — what SI teammates did through your own account

    TPONBEHALF (owner 2026-10-28): when someone an SI reports to asks it for something of their own ("How many notifications did I get today?"), the SI works on their own account, and every such step is logged. New page /on-behalf lists them in plain words: which SI, what it did, how you asked, how it went, patient information flagged; Everyone for those who manage the SI workforce. Linked both ways with /authentications. BFF route /api/security/si-on-behalf (pass-through to SecurityService). Brand tokens only, MotionConfig reducedMotion, axe clean, phone width; full next build green.

  30. · kamo-internal

    Voice assistants card explains the two Alexa skills and how a shared Echo learns your voice

    "Which Alexa skill?": KamoUniverse (devices + your SI Assistant on your own Echo, "Alexa, ask Kamo Universe …") beside KamoUniverse Assistant (your own assistant on a shared Echo that knows your voice, "Alexa, ask Kamo Assistant …"), and a fold-out with the voice-ID / Personalize skills / link-as-yourself steps. Static copy (dictionary 6bd34a83 first).

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