Sostituire il logo antropico rotto, OpenRouter e xAI
I file originali in kamo-internal erano 404 segnaposto (14 byte). Sostituito con i propri logo SVG da icone semplici.
Update calendar, contact, and integration ID types from Long to UUID
Calendar entities, contact sub-entities, and ContactIntegration IDs are now UUID. Updates all services, controllers, and DAV endpoints.
Aggiornare KbMediaRepository e VoipMessageRepository query param tipi a UUID
Resolve remaining Long/UUID type mismatches in controllers and beans
Fixes LeadVendorController, LeadMarketController, LeadImportController, ImagingController, AccountController, MediaStreamController, POSController, MemberContro...
Aggiornamento LeadImportRequest e NoteVersionDTO per UUID ID entità
Risolvere errori di tipo Long/UUID nei servizi e DTO
Risolve errori di compilazione in CommerceService, OrganizationService, Servizio esterno, Img*Service, Lead*Service, LeadVendorService, ImageService e tutti i D...
Include required fields in create book payload
The backend DTO requires isOrgDefault, isOrgLevel, and isVisible fields — sending only name caused a 415 Unsupported Media Type.
Prevent recipient popover from flashing at top-left corner
The popover initialized at position {0,0} and repositioned in a useEffect (after paint), causing a visible fly-in from the top-left. Fixed by using useLayoutEf...
Portal all overlays out of tool window stacking context
ToolWindowShell applies `transform: translateY(0)` which creates a CSS stacking context. This caused all `position: fixed` overlays (autocomplete dropdown, popo...
Fix autocomplete — infinite loop, missing API, auth
Three root causes fixed: 1. Infinite re-render loop: existingEmails was a new array reference every render, causing the search useEffect to re-fire endlessl...
Fix untyped recipient inputs and match Subject field styling
- Fixed drag handler blocking input focus by skipping preventDefault when clicking on INPUT elements or buttons - Rewired RecipientField from Tailwind classes...
Integrate recipient fields into tool window composer
The previous commit added the recipient components but modified the wrong composer (MessageComposer.tsx). This integrates RecipientField into MessageTool.tsx — ...
Add book buttons per source, remove redundant manage icon
- Remove redundant "+" manage sources icon from sources view header (already accessible via bottom "Manage Contact Sources" button) - Add "Add book" icon butt...
Show actionable error when SIP credentials fail (missing VoipCalling permission)
Handle RC webhook validation token; make body optional for verification requests
Only show connection error after failed registration attempt; use overlay to avoid layout shift
Explicitly stringify Long IDs in SmsController responses
**************** Long-as-string approach was not taking effect. Directly call .toString() on all Long IDs in the controller flat-map responses to guarantee no J...
Aggiungi @JsonIgnore a VoipMessage.conversation per prevenire il carico pigro sulla serializzazione
Use string conversationId throughout SMS tool to handle 64-bit IDs
Backend now serializes Long as string; update all conversationId types from number to string to match. Also enable send button when an attachment is present wit...
Serialize Long IDs as strings to prevent JS precision loss
CockroachDB unique_rowid() generates 64-bit integers larger than Number.MAX_SAFE_INTEGER (2^53-1). JS JSON.parse silently rounds them, causing conversation ID m...
Remove duplicate Back button from RingCentralConfig
Parent PhoneProviderSetup already renders an IconButton with ArrowLeft in the config view header, making the Back button inside RingCentralConfig a duplicate.
Return flat map from send endpoint to prevent LazyInitializationException
VoipMessage.conversation is FetchType.LAZY; after @Transactional commits, Jackson serializing the entity would throw LazyInitializationException causing a 500, ...
Fall back to org mainPhoneNumber when member has no VOIP config
Members without an individual MemberVoipConfig (or no fromPhoneNumber set) now use the org's mainPhoneNumber from VoipProviderConfig as the outbound number, ins...
Remove getJwtKey() from WebhookController after OAuth migration
Signature validation used jwtKey as HMAC secret which no longer exists on VoipProviderConfig. Skip validation for now consistent with ****************
Use plain img tags for local SVG provider logos
next/image does not reliably serve local SVGs without unoptimized flag. Plain img tags load /public assets directly with no issues.
Use correct session key casing for orgID and memberID
KSessionService stores keys as orgID and memberID (capital D). Both controllers were calling .get("orgId") and .get("memberId") which always returns null, causi...
Always show softphone and SMS buttons in NavTop
Removed isVoip gate so the buttons are always visible regardless of feature flag state.
Use feature type name as key before numeric id in org feature preprocessing
Java returns features with `type: "VOIP"` and a numeric `id`. The preprocessing chain had `obj.id` before `obj.type`, causing all features to get numeric string...
Aggiungere voip.> ai soggetti di flusso NATS e gestire IllegalStateException in VoipStompRelayController
Il flusso NATS ha coperto solo la chat.> in modo da sottoscrivere a voip.> gettato IllegalStateException ([SUB-90007] Nessun flusso corrispondente). Aggiunto vo...
Add security-service.*** to K8s ConfigMap
KamoJwtService requires this property for Bearer token validation in DavAuthFilter, but the K8s ConfigMap overrides application.yml and was missing it — causing...
Show Phone System(s) settings unconditionally so orgs can configure VOIP before enabling it
- Remove isVoip gate from phone section on /settings page — Provider Setup card has no condition so it always appears; Agents and Dial Plans still gated by isVo...
Guard against non-array API responses in useContacts hook
setBooks, fetchContacts, and searchContacts now safely handle error objects and Spring paginated wrappers instead of crashing with 'e.map is not a function'.
Nome corretto del campo in trovareEventsNeedingSync query da 'integrazione' a 'contactIntegration'
Utilizzare ical4j costruttori in generareEventIcs fallback, utilizzare la versione costante
Rimuovi no-op PrePersist/PreUpdate da ContactIntegration; aggiungi l'asserzione di test syncStatus
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
