diff --git a/changelog.md b/changelog.md index ccc11af..22b5377 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,11 @@ # Changelog +## 2026-04-11 - 1.19.2 - fix(web-ui) +normalize lucide icon names across SIP proxy views + +- Updates icon identifiers to the expected PascalCase lucide format in app navigation, calls, IVR, overview, providers, and voicemail views. +- Fixes UI icon rendering for stats cards and action menus such as transfer, delete, status, and call direction indicators. + ## 2026-04-10 - 1.19.1 - fix(readme) refresh documentation for jitter buffering, voicemail, and WebSocket signaling details diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 1d4770a..e4f4988 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: 'siprouter', - version: '1.19.1', + version: '1.19.2', description: 'undefined' } diff --git a/ts_web/00_commitinfo_data.ts b/ts_web/00_commitinfo_data.ts index 1d4770a..e4f4988 100644 --- a/ts_web/00_commitinfo_data.ts +++ b/ts_web/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: 'siprouter', - version: '1.19.1', + version: '1.19.2', description: 'undefined' } diff --git a/ts_web/elements/sipproxy-app.ts b/ts_web/elements/sipproxy-app.ts index cecb65c..c4ec890 100644 --- a/ts_web/elements/sipproxy-app.ts +++ b/ts_web/elements/sipproxy-app.ts @@ -18,7 +18,7 @@ const VIEW_TABS = [ { name: 'Phone', iconName: 'lucide:headset', element: SipproxyViewPhone }, { name: 'Routes', iconName: 'lucide:route', element: SipproxyViewRoutes }, { name: 'Voicemail', iconName: 'lucide:voicemail', element: SipproxyViewVoicemail }, - { name: 'IVR', iconName: 'lucide:list-tree', element: SipproxyViewIvr }, + { name: 'IVR', iconName: 'lucide:ListTree', element: SipproxyViewIvr }, { name: 'Contacts', iconName: 'lucide:contactRound', element: SipproxyViewContacts }, { name: 'Providers', iconName: 'lucide:server', element: SipproxyViewProviders }, { name: 'Log', iconName: 'lucide:scrollText', element: SipproxyViewLog }, diff --git a/ts_web/elements/sipproxy-view-calls.ts b/ts_web/elements/sipproxy-view-calls.ts index f23cf08..3b18477 100644 --- a/ts_web/elements/sipproxy-view-calls.ts +++ b/ts_web/elements/sipproxy-view-calls.ts @@ -422,7 +422,7 @@ export class SipproxyViewCalls extends DeesElement { menuOptions: [ { name: 'Transfer', - iconName: 'lucide:arrow-right-left', + iconName: 'lucide:ArrowRightLeft', action: async (modalRef: any) => { if (!targetCallId || !targetLegId) { deesCatalog.DeesToast.error('Please select both a target call and a leg'); @@ -620,7 +620,7 @@ export class SipproxyViewCalls extends DeesElement { title: 'Inbound', value: inboundCount, type: 'number', - icon: 'lucide:phone-incoming', + icon: 'lucide:PhoneIncoming', description: 'Incoming calls', }, { @@ -628,7 +628,7 @@ export class SipproxyViewCalls extends DeesElement { title: 'Outbound', value: outboundCount, type: 'number', - icon: 'lucide:phone-outgoing', + icon: 'lucide:PhoneOutgoing', description: 'Outgoing calls', }, ]; diff --git a/ts_web/elements/sipproxy-view-ivr.ts b/ts_web/elements/sipproxy-view-ivr.ts index 40ddd26..4074142 100644 --- a/ts_web/elements/sipproxy-view-ivr.ts +++ b/ts_web/elements/sipproxy-view-ivr.ts @@ -140,7 +140,7 @@ export class SipproxyViewIvr extends DeesElement { title: 'Total Menus', value: ivr.menus.length, type: 'number', - icon: 'lucide:list-tree', + icon: 'lucide:ListTree', description: 'IVR menu definitions', }, { @@ -148,7 +148,7 @@ export class SipproxyViewIvr extends DeesElement { title: 'Entry Menu', value: entryMenu?.name || '(none)', type: 'text' as any, - icon: 'lucide:door-open', + icon: 'lucide:DoorOpen', description: entryMenu ? `ID: ${entryMenu.id}` : 'No entry menu set', }, { @@ -156,7 +156,7 @@ export class SipproxyViewIvr extends DeesElement { title: 'Status', value: ivr.enabled ? 'Enabled' : 'Disabled', type: 'text' as any, - icon: ivr.enabled ? 'lucide:check-circle' : 'lucide:x-circle', + icon: ivr.enabled ? 'lucide:CheckCircle' : 'lucide:XCircle', color: ivr.enabled ? 'hsl(142.1 76.2% 36.3%)' : 'hsl(0 84.2% 60.2%)', description: ivr.enabled ? 'IVR is active' : 'IVR is inactive', }, @@ -228,7 +228,7 @@ export class SipproxyViewIvr extends DeesElement { }, { name: 'Set as Entry', - iconName: 'lucide:door-open' as any, + iconName: 'lucide:DoorOpen' as any, type: ['inRow'] as any, actionFunc: async ({ item }: { item: IIvrMenu }) => { await this.setEntryMenu(item.id); @@ -236,7 +236,7 @@ export class SipproxyViewIvr extends DeesElement { }, { name: 'Delete', - iconName: 'lucide:trash-2' as any, + iconName: 'lucide:Trash2' as any, type: ['inRow'] as any, actionFunc: async ({ item }: { item: IIvrMenu }) => { await this.confirmDeleteMenu(item); @@ -295,7 +295,7 @@ export class SipproxyViewIvr extends DeesElement { }, { name: 'Delete', - iconName: 'lucide:trash-2', + iconName: 'lucide:Trash2', action: async (modalRef: any) => { const ivr = this.getIvrConfig(); const menus = ivr.menus.filter((m) => m.id !== menu.id); diff --git a/ts_web/elements/sipproxy-view-overview.ts b/ts_web/elements/sipproxy-view-overview.ts index bb75116..90b224a 100644 --- a/ts_web/elements/sipproxy-view-overview.ts +++ b/ts_web/elements/sipproxy-view-overview.ts @@ -107,7 +107,7 @@ export class SipproxyViewOverview extends DeesElement { title: 'Inbound Calls', value: inboundCalls, type: 'number', - icon: 'lucide:phone-incoming', + icon: 'lucide:PhoneIncoming', description: 'Currently active', }, { @@ -115,7 +115,7 @@ export class SipproxyViewOverview extends DeesElement { title: 'Outbound Calls', value: outboundCalls, type: 'number', - icon: 'lucide:phone-outgoing', + icon: 'lucide:PhoneOutgoing', description: 'Currently active', }, { diff --git a/ts_web/elements/sipproxy-view-providers.ts b/ts_web/elements/sipproxy-view-providers.ts index bcb5fcd..48bc8b9 100644 --- a/ts_web/elements/sipproxy-view-providers.ts +++ b/ts_web/elements/sipproxy-view-providers.ts @@ -86,7 +86,7 @@ export class SipproxyViewProviders extends DeesElement { title: 'Registered', value: registered, type: 'number', - icon: 'lucide:check-circle', + icon: 'lucide:CheckCircle', color: 'hsl(142.1 76.2% 36.3%)', description: 'Active registrations', }, @@ -95,7 +95,7 @@ export class SipproxyViewProviders extends DeesElement { title: 'Unregistered', value: unregistered, type: 'number', - icon: 'lucide:alert-circle', + icon: 'lucide:AlertCircle', color: unregistered > 0 ? 'hsl(0 84.2% 60.2%)' : undefined, description: unregistered > 0 ? 'Needs attention' : 'All healthy', }, @@ -153,7 +153,7 @@ export class SipproxyViewProviders extends DeesElement { }, { name: 'Delete', - iconName: 'lucide:trash-2', + iconName: 'lucide:Trash2', type: ['inRow'] as any, actionFunc: async (actionData: any) => { await this.confirmDelete(actionData.item); @@ -579,7 +579,7 @@ export class SipproxyViewProviders extends DeesElement { }, { name: 'Delete', - iconName: 'lucide:trash-2', + iconName: 'lucide:Trash2', action: async (modalRef: any) => { try { const result = await appState.apiSaveConfig({ diff --git a/ts_web/elements/sipproxy-view-voicemail.ts b/ts_web/elements/sipproxy-view-voicemail.ts index 53fbaab..7b01e9f 100644 --- a/ts_web/elements/sipproxy-view-voicemail.ts +++ b/ts_web/elements/sipproxy-view-voicemail.ts @@ -239,7 +239,7 @@ export class SipproxyViewVoicemail extends DeesElement { }, { name: 'Delete', - iconName: 'lucide:trash-2', + iconName: 'lucide:Trash2', action: async (modalRef: any) => { try { await fetch( @@ -281,7 +281,7 @@ export class SipproxyViewVoicemail extends DeesElement { title: 'Unheard Messages', value: unheard, type: 'number', - icon: 'lucide:bell-ring', + icon: 'lucide:BellRing', color: unheard > 0 ? 'hsl(0 84.2% 60.2%)' : 'hsl(142.1 76.2% 36.3%)', description: unheard > 0 ? 'Needs attention' : 'All caught up', }, @@ -372,7 +372,7 @@ export class SipproxyViewVoicemail extends DeesElement { }, { name: 'Delete', - iconName: 'lucide:trash-2', + iconName: 'lucide:Trash2', type: ['inRow'] as any, actionFunc: async (actionData: any) => { await this.deleteMessage(actionData.item as IVoicemailMessage);