Live Change Log

See what we're building, in real-time. Every feature, fix, and improvement shipped across the platform.

18,042
Total Changes
4,671
Features
4,589
Fixes
32
Projects
Filter by project
All Projects18,042AIService114APIService140BillingService133ConversionService87DaemonService109DocsService191ESigService80EmailService392InitializerService304KBService76KlusterServices550MCPGatewayService45MediaService466RAGService63SecurityService1,532TranslateService47VOIPService175VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,606kamo-login319kamo-marketing590kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,332kamo-signer-monorepo50kamolos104
Filter by type
All TypesBuild24CI523Chore670Docs231Feature4,671Fix4,589Other6,781Performance136Refactor274Revert23Style48Test71Upgrade1
April 27, 2026
RevertSecurityService

Remove VOIP extension backfill from SecurityService

Kamo·4mo ago
Featurekamo-internal

Wire call features settings end-to-end through provider abstraction

- voipApi: add CallFeaturesDto type, getCallFeatures() and setCallFeatures() API calls - useSoftphone: add **************** state loaded from API on startup; ...

kamo·4mo ago
FeatureVOIPService

Add call features API — call forward + auto-answer wired through provider abstraction

- Add CallFeaturesDto and SetCallFeaturesRequest POJOs - Add callForward/autoAnswer flags to ProviderCapabilities - Add default getCallFeatures/setCallFeatures ...

Kamo·4mo ago
Featurekamo-asterisk-support

Initial commit — FreePBX recording uploader (GO)

Watches **************** for finished WAV recordings, groups multi-leg call legs by Asterisk UNIQUEID, and uploads each batch to APIService /api/voip/recordings...

Kamo·4mo ago
OtherSecurityService

Change to configmap to add kamo-asterisk-support

Kamo·4mo ago
Featurekamo-internal

VOIP_RECORDING_UPLOADS scope + recording pipeline counters/tunables

- APIManager: new VOIP_RECORDING_UPLOADS scope option (used by kamo-asterisk-support on FreePBX hosts to upload voicemail and call recordings via APIService)....

Kamo·4mo ago
FeatureSecurityService

System-config recording stats + recording-processing tunables

- GET **************** returns the four counters exposed on the kamo-internal Settings → Platform → Configuration → VoIP/SMS tab (vmPending, callPending, vm...

Kamo·4mo ago
FeatureDaemonService

RecordingProcessorJob + NATS shortcut for fresh uploads

- New Quartz job RecordingProcessorJob ticks every minute, dispatches independent VM and call batches concurrently to ConversionService **************** usi...

Kamo·4mo ago
FeatureConversionService

Recording ingest + FFmpeg processing pipeline

- New **************** endpoint stages multipart uploads forwarded by APIService into MinIO bucket **************** and creates an UnprocessedRecording stag...

Kamo·4mo ago
FeatureAPIService

VoipRecordingUploadController for kamo-asterisk-support uploads

POST /api/voip/recordings/upload accepts multipart bodies from kamo-asterisk-support running on FreePBX hosts. Validates the X-Api-Key has the new VOIP_RECORDIN...

Kamo·4mo ago
Featurekamo-shared-library

UnprocessedRecording staging entity, ImgDat track tracks, recording imaging service

- Fix ImageAssocType ID collision: VM_RECORDING=8, CALL_RECORDING=9 (were both duplicating MY_DOCS at 4). - Add **************** so a master recording can car...

Kamo·4mo ago
Featurekamo-asterisk-support

Initial commit — FreePBX recording uploader (GO)

Watches **************** for finished WAV recordings, groups multi-leg call legs by Asterisk UNIQUEID, and uploads each batch to APIService /api/voip/recordings...

Kamo·4mo ago
Featurekamo-internal

Replace mock contacts tab with fully-featured SoftphoneContacts

Extracts a new SoftphoneContacts component that wires the softphone contacts tab to the real contacts API via useContacts(). Replaces 4 hardcoded mock contacts ...

kamo·4mo ago
Featurekamo-shared-library

Add **************** helpers to TeamMember

Kamo·4mo ago
Fixkamo-internal

Cast voiceActivityDetection to bypass missing TS DOM type

voiceActivityDetection is a valid WebRTC MediaTrackConstraints property but is absent from TypeScript's DOM lib, causing a type error at build time.

kamo·4mo ago
Featurekamo-internal

Wire VAD + push-to-talk; remove unimplementable settings

- vadEnabled now passed as voiceActivityDetection in buildAudioConstraints so the browser honours the toggle when opening mic for a call - pushToTalk auto-mut...

kamo·4mo ago
April 26, 2026
Otherkamo-internal

debug+fix(softphone): inspect <audio> element state, auto-recover when bytes arrive but sound stays silent

WebRTC stats from a recent call showed inboundBytes=39680 / receivers unmuted / ICE pair succeeded — the bridge was delivering audio to the browser — yet the op...

kamo·4mo ago
Featurekamo-internal

Scrollable ringtone list with search filter

Make the ringtone catalog panel match the right-column height and scroll vertically when the list overflows, so members can navigate as more tones are added. Ad...

kamo·4mo ago
Otherkamo-internal

Dump WebRTC state again 5s after Established + track all state changes

The Established-time dump always shows receivers with muted=true because DTLS handshake and SRTP keying haven't completed yet. To diagnose "call connects but no...

kamo·4mo ago
Featurekamo-internal

Add seven more ringtones to the catalog

Adds Battleship Horn, Demon Horn, Land Line, 1985 Ring, Office Phone, Ringing Old Phone, and Olé under /public/sounds/ringtones/ and wires them into RINGTONE_CA...

kamo·4mo ago
Featurekamo-internal

Add Sci-Fi and Buzzer ringtones to the catalog

Drops two new ringtone assets under /public/sounds/ringtones/ and registers them in RINGTONE_CATALOG so they appear in the Ringtones subtab and can be set as th...

kamo·4mo ago
FixKlusterServices

Configure STUN so browser ICE can complete bidirectionally

Two-party browser-to-browser calls connected at the SIP layer but had no audio either direction. Voicemail (one-way Asterisk → browser) worked because Asterisk'...

Kamo·4mo ago
Otherkamo-internal

Dump WebRTC negotiation state on Established

To diagnose "call connects but no audio between parties", log the peer-connection state (ice / dtls / signaling) along with sender and receiver tracks (kind / e...

kamo·4mo ago
Fixkamo-internal

Live audio that survives load-interrupts, centered spinner, outbound ringback

Three coordinated fixes for the in-call audio path: 1. AbortError on remoteAudio.play() (visible in production console as "The play() request was interrupte...

kamo·4mo ago
Fixkamo-internal

Hangup tears down ALL live sessions, not just the primary

Self-call edge case left a session leaked: dialing your own extension creates an outbound session, then Asterisk loops the call back as a second inbound session...

kamo·4mo ago
Fixkamo-internal

Instant connecting feedback on outbound dial

Same problem the inbound Answer button had: clicking Call kicked off the SIP INVITE round-trip (1-3 seconds) but the button kept its idle "Call" appearance the ...

kamo·4mo ago
Fixkamo-internal

Connecting animation + audio that actually plays + ringtone unlock

Three coordinated fixes for the inbound-call path: 1. Visual feedback while accepting. Clicking Answer left both buttons responsive-looking but unresponsive...

kamo·4mo ago
Fixkamo-internal

Mount SoftphoneProvider above ToolDock so tool windows can read it

Opening the Softphone popup crashed the page with "This page couldn't load" because tool windows mount inside ToolDock, which lives in ToolProviders — a SIBLING...

kamo·4mo ago
Fixkamo-internal

Use Grid size prop so AV panels fill the row

MUI v7's Grid is flexbox-based, so the gridColumn sx I'd been using was a no-op — items rendered at their natural width and left empty space on the right. Switc...

kamo·4mo ago
Fixkamo-internal

Migrate stale ringtone IDs to default on load

If a user's saved AV preferences reference a ringtone that no longer exists in the catalogue (e.g. 'classic' from before the catalogue was trimmed), the Rington...

kamo·4mo ago
Featurekamo-internal

Three-column audio layout, drop saved-banner, fill width

Lays the Audio subtab out as Microphone | Speaker | Advanced across the full row on lg+ screens (md still pairs them two-up, xs stacks). The Advanced card switc...

kamo·4mo ago
Featurekamo-internal

Split AV settings into Audio/Video/Ringtones subtabs

Reorganizes the Audio/Video tab into three internal subtabs and lays each one out horizontally so settings fit within the viewport without the wall of vertical ...

kamo·4mo ago
Featurekamo-internal

Add Audio / Video Settings tab and wire into softphone

Adds a per-device AV preferences store (localStorage, machine-specific, not roaming) plus a fully-featured tab on /settings/member/<id> for configuring and test...

kamo·4mo ago
Featurekamo-internal

Always-on SIP session with auto-popup + ringtone on inbound calls

The softphone used to register only while the popup tool window was open — close it and inbound calls were silently missed. Lift the session into a SoftphonePro...

kamo·4mo ago
Fixkamo-internal

Dialpad digits now register on touch devices

The dialpad buttons called e.preventDefault() in both onTouchStart and onTouchEnd. That stops the browser from firing the synthetic click event that follows a t...

kamo·4mo ago
FeatureKlusterServices

Seed pbx.k1.kluster.kamocrm.com as a static domain

The browser softphone needs SIP-over-WSS to land on a hostname with a real TLS cert. Add the FreePBX admin / WS hostname to STATIC_DOMAINS so the auto-cert seed...

Kamo·4mo ago
FixKlusterServices

Host browser SIP WSS on internal.kamocrm.com (real cert)

Browsers refused the WebSocket connection to **************** with close code 1006 because Traefik was serving its self-signed default cert for that hostname (n...

Kamo·4mo ago
Featurekamo-meet

Dynamic title and description from org config.json

Inline JS in title.html derives the themed CDN path from the hostname, fetches config.json, and sets the title to "Meets - {siteNameShort}" and description meta...

Kamo·4mo ago
Featurekamo-register

Use org short name and description in HTML head

Replace org-API-based title logic with config.json siteNameShort so the title follows the same pattern as other sites: "Register - {siteNameShort}". Adds descri...

Kamo·4mo ago
Featurekamo-login

Use org short name and description in HTML head

DynamicMetaLoader now sets document.title to "Login - {siteNameShort}" and writes the org description into the meta description tag. Static layout.tsx fallback ...

Kamo·4mo ago
Featurekamo-internal

Use org short name and description in HTML head

DynamicMetaLoader now sets document.title to siteNameShort (was siteName) and writes the org description into the meta description tag. Static layout.tsx fallba...

kamo·4mo ago
FeatureSecurityService

Include org description in config.json

Add description field to buildConfigJson() and pass org.getDescription() from writeConfigFiles() so the themed config.json carries the org's description for fro...

Kamo·4mo ago
Fixkamo-internal

Separate globe presence for marketing live chat vs members

Public Chat widget tickets keep org placeholder as requestorId; use only media session presence for those rows. Internal and other tickets use member presence (...

kamo·4mo ago

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing