Skip to content
KAMOUniverse

Changelog

What's new.

Every improvement to the platform, as it ships.

  1. · kamo-shared-library

    Filter the grid query by an organization's dropdown fields

  2. · InitializerService

    Add the Automation Streams package to the repository scan

  3. · kamo-shared-library

    Stream, version, run and outbox tables, rights 665-666, and the lead-change tap

    Dark until SecurityService declares the writer bean and an org publishes a stream. The outbox insert runs in its own savepoint so it can never fail the lead transaction.

  4. · kamo-shared-library

    Pipeline, dropdown field and saved view tables, and rights 661-664

    New tables only; leads is unchanged. Positions and dropdown answers use plain lead ids, so they sit in a soft-reference list the lead delete walks, apart from the real foreign keys.

  5. · kamo-internal

    Optional loan statuses in settings and the pipeline, and the program plan

    The mortgage Automation tab gains an Extra loan statuses group. The board shows an optional status only while a loan sits in it, so lenders who never turn one on see no new columns.

  6. · kamo-shared-library

    Optional Need Docs, Ready for Submission and Closing Scheduled statuses

    Three more stops a lender can add to its pipeline, each off until the organization turns it on, so no other lender sees them and no loan row can carry the new ordinals until services have the new enum. Every existing arrow stays. Need Docs is pre-application, so it carries no TRID clock. The switch governs entering a status, never leaving it.

  7. · SecurityService

    A mail-only domain, exempt from the one-domain rule

    An organization that already has a domain could not add an alias domain: POST /domains refuses a second root (ONE_DOMAIN_PER_ORG), and that is every organization, so the Alias domains card's flow could not work for anyone. POST /domains/email-only adds one with the same right and the same TXT proof. It is inactive, which keeps it out of OrgDomains.primaryDomain (acme.co would otherwise take over from acme.com by sorting first), and gets no standard subdomains. The domains list no longer marks an inactive domain as default, or a verified mail-only domain would become where new mailboxes are created.

  8. · kamo-internal

    Call and meeting notices settings; no "automated assistant" copy left in SI settings (TPNODISCLOSE)

    Owner order 2026-10-29: SIs no longer introduce themselves up front. - Settings > Super Intelligence > Call and meeting notices (tab + menu entry + landing card, VIEW/MANAGE_AI_WORKFORCE like Background sound): the neutral recording notice (default ON) and "Introduce SIs as virtual assistants" (default OFF), with what callers hear and the short honest answer to "Am I talking to a real person?". Through the /api/kamoai BFF catch-all. - Wake-up easter egg, background sound help and the required-opening example no longer say callers are told it is an automated assistant. Screenshots (light/dark/phone, axe clean) checked in a component harness.

  9. · AIService

    The website chat never volunteers that it is an SI and answers a sincere ask honestly (TPNODISCLOSE)

    Owner order 2026-10-29, with the controller's rule: on the website chat the SI (or persona) never brings up what it is and never calls itself an SI or an AI; the first sincere "am I talking to a real person?" gets a brief, honest, in-character answer; never a claim to be human. - WEB_CHAT_ADDENDUM V3/V4 and the persona path carry IdentityRule.TEXT; the generic public prompt says the same. - The visitor-facing fallback lines say "Our assistant", not "Our AI assistant".

  10. · kamo-shared-library

    An organization's call and meeting notices, declared for KamoInitializer (TPNODISCLOSE)

    ai_org_voice_notices: the neutral recording notice (default ON) and whether SIs introduce themselves up front as virtual assistants (default OFF), one row per org that changed a default. kamoai-service reads and writes it JDBC only; DDL applied by hand (kamoai-service ****************

  11. · kamo-signer-monorepo

    An updated invoice says so, and what changed, before anything else

  12. · kamo-internal

    Add a seat change to the customer's unpaid bill, and show updated invoices

    - Change dialog: a third billing choice, "Add it to their unpaid bill", with the preview saying which invoice it updates and its new total, or that there is no unpaid bill so it goes on its own. - Invoices: "Updated" and "Ready to send again" badges in the list and drawer, What changed, an Earlier versions section (each version's total, due date, reason, lines), and "Send updated invoice" while the customer still has the earlier copy. - My Bill and the bill pill: "Updated {date}" and what changed on an updated bill.

  13. · SecurityService

    Send an updated invoice, and show the customer everything they owe

    - Sending an invoice updated since it last went out uses the new commerce.invoice_updated email: what changed, the old and new amounts, the new due date, and the updated PDF. - Every invoice email lists the customer's other unpaid invoices and the total now owed, so two bills read as one statement. - The seller's owners are told when an updated invoice is ready to send. - The invoice page, PDF and My Bill say when an invoice was updated and why. - Seat changes accept invoiceTiming OPEN_INVOICE.

  14. · kamo-shared-library

    The console sees an invoice's updates and earlier versions

  15. · kamo-shared-library

    The updated-invoice email, and what else the customer owes

    commerce.invoice_updated tells a customer their invoice was updated, what changed, the old and new amounts and the new due date, with the updated PDF. Both invoice emails carry {{alsoOwed}}: any other unpaid invoices and the total now owed, empty when there are none.

  16. · kamo-shared-library

    Updated invoices — later charges go onto the customer's unpaid bill

    A seat or license change can now be billed OPEN_INVOICE: when it takes effect its prorated charge is added to the customer's sent, unpaid invoice, which is then ready to go out again as an updated invoice — one bill to pay, not two. When nothing unpaid can take it (none open, part-paid, card payment under way) it gets an invoice of its own, as NOW does. - SubscriptionInvoice: revision, revised_at, revision_note; each earlier version is kept in **************** - Sending an updated invoice gives it the market's full terms from today, takes it out of PAST_DUE and restarts reminders; nothing chases or card-charges an update the customer has not been sent yet. - The seller's owners are told an updated invoice is ready, as for a draft. - otherOpenInvoices: what else the same customer owes, for a statement summary.

  17. · kamo-internal

    Add an alias domain end to end, guided for a non-technical owner

    Settings -> Email -> Domains -> Alias domains: - Adding a domain the organization hasn't proved yet now adds it to the organization's domains and shows the one TXT record that proves ownership (the same _kamo-verify record as the DNS setup studio), with plain steps for where to add it and a Check now button that finishes adding it once live. A domain in progress is picked up again on return. - The DNS records dialog walks through the MX record (priority and server shown the way registrars ask for them), then the existing SPF, DKIM and DMARC cards from DNS setup for the same domain, then plain advice on staying out of spam. - Status reads Ready only once MX, SPF and DKIM are all live.

  18. · EmailService

    Alias domains sign with the org domain's own DKIM key

    An alias domain is an organization domain, and SecurityService already gives every org domain one DKIM key (org_domains.dkim_*), the record the owner is told to publish, and dkim_verified once DNS has it. The mail-server key EmailService generated for alias domains was a second key and a second record for the same domain; none had been generated yet. - OrgDomainDkimKeys: a member's mail from an ownership-verified org domain whose key is published is signed with that key (alias domains, and an org's own mail domain); platform hosts stay with rspamd. - KamoMailAliasDomains is routing only. - GET /alias-domains/{id}/dns: MX status, the org domain id the SPF/DKIM/DMARC steps work from, and their last answers. - The composer lists an address once when a member holds an explicit alias at the primary mailbox's alias-domain copy (how a member keeps kamouniverse.com while the org default moves to another alias domain).

  19. · kamo-internal

    The SI's voice card says, in plain words, the voice heard on calls and in meetings (TPSAMEVOICE)

    or which voice each path speaks when the live calling model does not offer the chosen one, and the voices that keep them the same are marked 'Calls and meetings'.

  20. · kamo-internal

    Tools across the top, folders down the left

    A member reported the mail client's left column was so crowded they could see about one folder at a time, and that New Message was out of proportion with everything else. The sidebar stacked the mailbox switcher, refresh, a 72px compose card, search, the filter panel and two stat tiles ahead of the folder tree, which got whatever height was left. Now, as in Notes: - MailCommandBar: one 40px row across /messages with the mailbox switcher, a normal-sized New Message button, search (inline, scope beside it), filter and refresh. - Filters open as a full-width strip under the toolbar, controls side by side. - FolderSidebar is folders only: a one-line header with the unread/total counts and the new-folder button, then folders, labels and smart folders in a single scroll region (labels/smart folders no longer eat the tree's height). Rows are tighter and the column is 256px instead of 320px. - The SMTP-only floating Compose button is gone; the toolbar has New Message. - Boot skeleton and tour placements follow the new shape.

  21. · AIService

    One voice per SI on every channel: the voices view names the voice heard on the cascaded pipeline and on the live voice model (TPSAMEVOICE)

    speech API voices it accepts (probed) and its own; their genders are curated. The voices view gains 'effective' (speech + live voice, same or closest) and marks each option a live model also speaks ('everywhere'). kamoai-voice reads it per call. DML for crm's registry rows and its three SIs' one voice in docs/sql.

  22. · kamo-login

    Word the page for a first password when the link says setup=1

    A member an administrator added has never had a password, so the welcome letter's link opens the same page worded as Set, not Reset.

  23. · SecurityService

    An added member's welcome lets them set their first password

    A member an administrator adds has no password, so the plain WELCOME's Sign in button led nowhere. Send WELCOME_SET_PASSWORD instead when the account has no password: a set-password link and code, valid seven days, minted by the same token path as forgot-password (extracted as mintToken). The link carries setup=1 so kamo-login words the page for a first password.

  24. · kamo-shared-library

    WELCOME_SET_PASSWORD, the letter for an account that has no password yet

    An administrator who adds a member creates a user with a null password. The plain WELCOME told them to sign in, which cannot work. This letter carries the set-password link and 8-character code instead, worded as a first password, with the typed names in their escaped twins.

  25. · kamo-internal

    Copy a tracking code from the picker and drawer headers

    The headers show only the eight-character handle. Add a copy button beside it that copies the full code, so a member already in the link picker or code drawer does not have to go back to the table.

  26. · kamo-internal

    The failed meeting recap card with Send again (TPRECAPFIX)

    **************** what the supervisor's "couldn't send the recap" alert opens: which meeting, what happened and how to fix it in plain words, what did go out, and Send again (through the /api/kamoai BFF to kamoai-service). Org brand colours, corner ribbon for the state, phone width, reduced motion.

  27. · 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).

  28. · 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).

  29. · 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.

  30. · 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.

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