Move Mailing Address into 3-column row with Lead Info and Primary Contact
International support — CountrySelect, LanguageSelect, SubdivisionField across all forms
- Add reusable CountrySelect (207 countries, flag icons), LanguageSelect (26 languages, flag icons), SubdivisionField (US state dropdown with flags; other cou...
Add international support — Lead country/subdivision/timezone, Org language, CountryType isProvince
- CountryType: add PROVINCE_NAMES set, isProvince(), getSubdivisionLabel() - Organization: add language (LanguageType) field - Lead: add country (CountryType), ...
ASSIGN_LEADS right, agent filter unassigned option, grid column cleanup
- Gate 'Unassigned Leads' agent filter option behind ASSIGN_LEADS right - 'All Leads' excludes unassigned leads for members without the right - Remove Street, P...
Add Assign To field to Market & Assignment section on /leads/new
- Fetches active team members from **************** on mount - Groups members by department with alphabetically sorted departments and members - Formats names a...
Emit recordedAt + per-file extension in upload manifest
- Watcher: every emitted Recording carries RecordedAt, derived from the EPOCH segment of our managed **************** filename, falling back to file mtime f...
Pass Recording metadata to imaging — ffprobe length + manifest parsing
- **************** runs ffprobe -show_entries format=duration on the master Opus/WebM, returns ms. 0 = unknown (not fatal). - **************** now: * runs p...
Recording + RecordingExt entities, RecordingImagingService writes them
- New Recording entity (UUID id, IMG_ID, IS_MASTER, IS_VM, EXTENSION, MEMBER_ID, LENGTH, DATE_RECORDED, DATE_CREATED [DB-defaulted via @CreationTimestamp]). ...
Update Platform Administration cards to match unified tab structure
Replace the two stale cards (Organizations standalone page + Configuration) with five cards matching the actual tabs: General, Organizations, VOIP & SMS, System...
Full-width grid layout and move sync trigger from Advanced tab
- Redesign VOIP & SMS tab to use full content-area width: pipeline stats span the top row, Recording Processing and Global Sync Schedule sit side by side in...
Merge Organizations into Configuration page with unified tab nav
- Add Organizations as a tab in **************** (General · Organizations · VOIP & SMS · System User · Advanced order) - Delete **************** standalone page...
Surface PHONE_SERVER_ID on phone-instance overview tab
Operators configuring kamo-asterisk-support on a FreePBX host need to paste the matching VoipProviderInstance UUID into the helper's config file as PHONE_SERVER...
Clickable VOIP extension in Interaction Center opens softphone with number prefilled
Backfill TeamMember phoneWork extension from MemberVoipConfig on startup
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; ...
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 ...
Add MemberCallFeatures entity and repository for call forward and auto-answer preferences
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...
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)....
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...
RecordingProcessorJob + NATS shortcut for fresh uploads
- New Quartz job RecordingProcessorJob ticks every minute, dispatches independent VM and call batches concurrently to ConversionService **************** usi...
Recording ingest + FFmpeg processing pipeline
- New **************** endpoint stages multipart uploads forwarded by APIService into MinIO bucket **************** and creates an UnprocessedRecording stag...
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...
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...
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...
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 ...
Replace extension Chip with inline text next to role in Interaction Center
Remove manual phone extension field; write VOIP extension through to SecurityService on save
Include phoneWork extension in by-department response; accept phoneWorkExtension on member PUT
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...
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...
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...
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...
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...
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 ...
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...
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...
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...
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...
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...
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 ...
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...
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...
Add includeCompany to market popup and companyName to leads
Market add/edit popup (LeadMarketManager): - Radio control "Track Company Name" / "Individual Only" (required) - Defaults to unset on new market; pre-fills on e...
Je, unaona nini kuhusu usafiri?
Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.