Skip to content
KAMOUniverse

Changelog

What's new.

Every improvement to the platform, as it ships.

  1. · KBService

    Comment threads, sealed with the task and announced to the thread

  2. · kamo-shared-library

    A write filter that announces org changes from services

  3. · AIService

    Deepgram, ElevenLabs, AssemblyAI, Cartesia families and the per-type adapter registry

    Beyond the plan: the Perplexity chat check classifies failures as every other check does (spec 4.7.3); ElevenLabs and Cartesia refuse a missing voice and a voice or model list that is not a list; Deepgram merges the entries of one model; AssemblyAI uploads raw audio as octet-stream.

  4. · kamo-internal

    My tasks beside the wall, and /notes?task= opens any task

  5. · kamo-internal

    Provider detail — connection, models and health rooms

    The provider page: a hero (state, PHI, switch, sync, verify, remove), a catalog-driven Connection room that saves only what changed, a Models room (filters, search, grid, Add model) and a Health room. Beyond the plan's code: the remove challenge is asked in capitals (the dialog compares in capitals, so a mixed-case name could never be typed), a model's switch no longer also opens the model, switches move at once and revert on refusal, a connection draft survives a look at another room, a failed refresh keeps the page, refusals land under the field they name or are said out loud, a sync that listed nothing warns, operators see the credential and opt-out figures, and a tenant sees a Kamo service as its models and health.

  6. · kamo-internal

    Platform Configuration KamoAI kill switch tab

    Stopping takes a 12-500 character reason and the word STOP; starting again takes START. AI_PLATFORM_KILL_SWITCH now gates the KamoAI tab and its menu link, which sits where the tab does in the strip.

  7. · kamo-internal

    Handlebars.js compose engine held to the shared-lib goldens

  8. · KBService

    The task API — mine, search, create into an Inbox, change, finish, link

    A status list with no status in it (status=,) reads as the default instead of reaching the query builder as an empty filter; blank linkKind/linkRef are absent like every other blank filter; a query parameter of the wrong type (?limit=ten) is a 400 VALIDATION, while a mistyped path id stays a 404.

  9. · AIService

    Embeddings, rerank, speech, images, OCR and translation families

  10. · kamo-internal

    Tasks in every list — chips, details, and the Inbox's fixed shape

  11. · kamo-internal

    AI settings Workforce controls tab — pause and resume every AI member

  12. · KBService

    Tasks across lists — create, reassign and move, status, delete, links

    A move re-seals the task's words under its own label, since the fallback key is the list owner's and the move changes the owner. A due time sent again unchanged leaves a pending due notice alone, and handing over a done task announces nothing.

  13. · kamo-shared-library

    OrgChangePublisher for services

  14. · kamo-shared-library

    Org-change domains, ported from the web proxy

  15. · kamo-shared-library

    Signature field filter for server-side compose

  16. · AIService

    Real model discovery for OpenAI-style, Anthropic, Google, Hugging Face, Ollama and catalogue-only vendors

  17. · KBService

    Every member's Inbox, made on first need in a transaction of its own

  18. · kamo-shared-library

    The 29 header layouts as Handlebars templates, held to the legacy goldens

  19. · kamo-internal

    Registry home — providers grid, Add provider, Provided by Kamo, coverage

    The grid's switch and order arrows own their clicks (gridOwnClick): ag-Grid fires rowClicked from a native listener, so stopPropagation could not keep them from opening the provider. The name is a button for keyboards; only the newest list answer lands; switches move at once and go back on a refusal; the Order column is pinned so the arrows stay in view at a settings panel's width. Add provider holds the form while it saves, and a refusal naming a field the form does not show is a toast instead of vanishing. Coverage filters show their counts.

  20. · kamo-internal

    Find a time — colleagues' busy time, working hours and suggested slots

    The event dialog's GUESTS section gains the scheduling assistant: the event's day from 06:00 to 22:00 in its own zone, one track per person (you and up to 20 chosen members) with busy and tentative blocks, time outside working hours hatched, the hours marked, the event outlined, and up to five suggested slots of the event's length from GET /api/calendar/freebusy. - An answer is drawn only under the question it answers, so the previous day's suggestions never sit under the next day's heading. - The view follows the event when a suggestion moves it to another day. - Suggestions are held while the event is being saved. - wallClockToInstant measures the zone's offset from its clock face instead of parsing it back through the machine's zone, which put 06:00 New York on the morning the clocks go back an hour late on any US machine.

  21. · kamo-shared-library

    Mention rows

    MediaObjMsgMention maps media_obj_msg_mentions (composite key obj_id + member_id). deleteByObjId is a derived delete, not a JPQL bulk DELETE, so an edit that keeps a mention re-inserts it instead of merging into a stale managed row and losing it.

  22. · KBService

    Tasks carry status, priority, due, assignee and links; the Inbox keeps its rules

  23. · kamo-internal

    AI status and hiring checklist on the member profile; Person-or-AI is one-way

  24. · AIService

    Known-model catalogue (hints + unchanged prices) and name-hint classifier

  25. · kamo-shared-library

    The 29 signature layouts as Handlebars templates, held to the legacy goldens

  26. · kamo-internal

    My tasks — scope, filters, a grid, and a composer that assigns

    The grid ticks a task off without opening it, keeps each column's sort and width across renders, sorts due time, priority and status by meaning, says when a filter matches nothing, and reloads after a create rather than showing a task given to someone else. The composer keeps a typed draft through a parent's re-render and, raised over floating notes, opens its menus above itself (the layer theme now shared with the task drawer).

  27. · KBService

    Who may do what to a task, the task queries, and the task views

  28. · kamo-shared-library

    Mention markup parsing, resolution and plain text

  29. · VOIPService

    Announce new voicemails — live panel, phone push and a card

    A voicemail the sweep writes for the first time, on an extension with an assigned member and received in the last 24 hours (spec D17), now publishes voip.voicemail.<org>.<member> {type: VOICEMAIL_DEPOSITED, ...} after commit and raises a VOICEMAIL_RECEIVED card through EmailService. The frame's org and member ids are text, because this service's ObjectMapper writes a Long as a JSON number. The sweep also reads the two numeric PBX voicemail times, FreePBX's Unix seconds (Asterisk origtime) and KamoPBX's Gregorian seconds (Kazoo timestamp). Both used to fall back to the time of the sweep, so the first sweep of a PBX mailbox would have announced every old voicemail in it.

  30. · kamo-shared-library

    Message frames carry sender intelligence and mentions

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