Update availability endpoints to use MemberAvailabilityStatus enum
Replace isAvailable boolean with MemberAvailabilityStatus enum
Enrich upload manifests with Asterisk CDR caller-ID data
Adds optional MySQL CDR enrichment so the softphone history tab can display who called (or was called). When ASTERISK_CDR_DSN is configured as a Forgejo repo se...
Parse CDR caller-ID fields from upload manifest
When kamo-asterisk-support includes a cdr{} section in the upload manifest (populated when ASTERISK_CDR_DSN is configured), ConversionService extracts callerIdN...
Add CDR caller-ID columns to recordings table (order 40)
Adds caller_id_num, caller_id_name, call_direction, and call_result columns to the recordings table so the softphone history tab can display who called without ...
Add CDR caller-ID fields to Recording entity
Adds callerIdNum, callerIdName, callDirection, and callResult columns to the Recording entity so kamo-asterisk-support can store Asterisk CDR metadata alongside...
Add COMP payment method option to subscription order wizard
COMP is a valid backend PaymentMethod enum value for complimentary platform-admin grants, but was missing from the frontend type and wizard UI — only INVOICE an...
Show platform kamocrm domain on custom domain entry
Surface the active *.kamocrm.com hostname on the add-domain flow and detect custom domains by excluding kamocrm URLs instead of default-flag alone.
Show Manage Domain button for top-level org owners and system members
Show Set Up Billing button for org owners with no account
When an org owner opens the plans-billing tab and no billing accounts exist, display a bootstrap prompt instead of the generic "contact your org owner" message....
Add bootstrap-billing endpoint for pre-existing orgs
POST **************** triggers the same idempotent setup as the sub-org creation hook (BillingSetupService .setupForSubOrgCreation) but can be called on-demand ...
Wave 3 conversions, fallback fix, and auto-translate CI
- Replace all hardcoded English strings with t() calls across wave 3 components (chat, clubhouse, support, notes, pipeline, leads, nav, etc.) - Merge wave 3 f...
Wire next-intl with member.language as locale source
Adds next-intl-based internationalization across kamo-internal without URL locale prefixes. Active locale is read from the kamo-locale cookie, which mirrors the...
Fall back to imaging recordings for call history + voicemails
FreePBX 17 doesn't expose voicemail messages over REST or GraphQL on this install (the GraphQL voiceMail type returns mailbox config, not messages, and /admin/a...
Paginated Recording lookup by (instance, extension, isVm)
Used by the softphone tabs as the canonical source of truth for call recordings and voicemails when the upstream provider can't list them — e.g. FreePBX 17 has ...
Auto-provision KamoCRM seat on sub-org creation; promote-billing-owner endpoint
EntitlementService walks SubscriptionMember (not AccountMember) to compute member entitlements — the union of features across active licensee subs, plus the Fre...
Add member language + default_currency columns
Adds two NOT NULL columns to the members table backing the new Member.language (VARCHAR DEFAULT 'ENGLISH') and Member.defaultCurrency (VARCHAR(10) DEFAULT 'USD'...
Add language step, country timezone picker, scroll + *** fixes
- New 'My Language' step prepended to the wizard, mirroring the country step's layout. Lists the 22 marketing-supported locales as flag tiles with native na...
Add language + default currency to Regional Settings card
Member profile's Regional Settings card now exposes editable Language (22 supported locales mirroring the marketing site) and Default Currency (searchable Autoc...
Persist member language/timezone/currency on signup
The /register endpoint now accepts language, timezone, and defaultCurrency alongside the existing country field. RegistrationService sets country and timezone o...
Map external customer address blocks into AccountAddress on pull
Add AdapterAddressMapper helper that converts a JSON address node from any provider into an EmbAddress and attaches it to an Account as a typed AccountAddress (...
/account/new copy-from-lead UX, full name fields, dual phones, address; account-level address management
Frontend: - /account/new: per-section "Copy from Lead" buttons + header "Copy all from Lead" button (when leadId param) - Name section: prefix, first, middle, l...
Support nested name/email/phoneNumbers + address management endpoints
- AccountController accepts nested name/email/phoneNumbers JSON on POST/PUT - Initial address on POST creates SHIPPING (and BILLING when useAsBillingToo set), s...
Production-grade History + Voicemail tabs with media-player tool
History tab (SoftphoneHistoryTab.tsx): - Infinite scroll via IntersectionObserver inside the panel's scroll container - Filter chips: All / Inbound / Outbound /...
Migration runner for Recording provider-lookup columns + VM archive columns
Adds RECORDINGS.provider_instance_id (UUID) and provider_external_id (VARCHAR(64)) plus the composite idx_recordings_provider_lookup index used by the softphone...
Persist providerInstanceId + providerExternalId on Recording at ingest
Threads asterisk-support's X-Phone-Server-Id and X-Asterisk-Unique-Id (already in UnprocessedRecording) onto the new RecordingMetadata fields so call/voicemail ...
Add **************** with HTTP Range support
Generic streaming endpoint for audio/video imaging assets, used by the kamo-internal MediaPlayer tool. Reuses ImageService authorization (same as /download/...)...
Recording playback, voicemail archive, paginated voicemail, history enrichment
- New RecordingController with bulk lookup, range-streamed audio for master + per-channel tracks, and metadata for the media-player tool window - CallController...
Provider lookup keys on Recording, voicemail archive, MinIO range streaming
- Recording: add providerInstanceId + providerExternalId for joining provider call-history / voicemail rows back to imaging assets - PhoneVoicemail: add isArchi...
Add History tab — paginated audit timeline with search and filters
- LeadHistoryPanel: sticky filter toolbar with debounced search, **************** filters, MUI table with pagination, color-coded event chips, member-name resol...
Add GET /{id}/history and /{id}/history/filters endpoints
Paginated, filterable, searchable lead-history endpoint with batch actor loading (no N+1). Filters endpoint returns distinct used fields, all registry fields, d...
Add lead-history audit log — entity, registry, service, DTO, LeadService hooks
- LeadHistory entity (UUID PK, plain Long FKs — no FK constraints to allow lead deletion/conversion) - LeadHistoryEventType enum with human-readable labels - Le...
Add lead-account assignment UI, currency system, assign/new account pages, settings currency field
Add lead-account assignment endpoints, update AccountController for CurrencyType
Add CurrencyType enum, update CountryType with primary currency, add currency to Account/Organization, add lead-account assignment to LeadService
Dynamic member type label in My Account page title
Title now reads "My {Member|Team Member} Account" using the org-configured behavior labels, switching automatically once the member's type is loaded.
Move Create Document button into DocManager toolbar
The button was only available on /doc/manager via the actions prop. Moved all logic (state, handler, DOC_TYPES, menu) into DocManager so it appears on every emb...
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.