diff --git a/package/secubox/luci-app-localai/Makefile b/package/secubox/luci-app-localai/Makefile index a95105ed..8fc07c70 100644 --- a/package/secubox/luci-app-localai/Makefile +++ b/package/secubox/luci-app-localai/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-localai PKG_VERSION:=0.1.0 -PKG_RELEASE:=10 +PKG_RELEASE:=12 PKG_ARCH:=all PKG_LICENSE:=Apache-2.0 diff --git a/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/chat.js b/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/chat.js index ecf098e4..39c4347f 100644 --- a/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/chat.js +++ b/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/chat.js @@ -27,7 +27,8 @@ return view.extend({ render: function(data) { var self = this; - var models = data.models || []; + // RPC with expect returns array directly + var models = Array.isArray(data) ? data : (data && data.models ? data.models : []); var container = E('div', { 'class': 'localai-chat' }, [ E('style', {}, this.getCSS()), diff --git a/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/dashboard.js b/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/dashboard.js index ab83fe29..4bf0d43c 100644 --- a/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/dashboard.js +++ b/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/dashboard.js @@ -75,10 +75,13 @@ return view.extend({ callHealth(), callMetrics() ]).then(function(results) { + console.log('LocalAI Dashboard RPC results:', JSON.stringify(results)); + // RPC with expect returns arrays directly, not wrapped objects + var modelsData = Array.isArray(results[1]) ? results[1] : []; return { status: results[0] || {}, - models: results[1] || { models: [] }, - health: results[2] || { healthy: false }, + models: modelsData, + health: results[2] || {}, metrics: results[3] || {} }; }); @@ -117,7 +120,7 @@ return view.extend({ E('span', { 'class': 'lai-quick-stat-label' }, _('Models')) ]), E('div', { 'class': 'lai-quick-stat-value', 'id': 'models-count' }, - (data.models.models || []).length.toString() + (data.models || []).length.toString() ), E('div', { 'class': 'lai-quick-stat-sub' }, _('Installed')) ]), @@ -216,11 +219,11 @@ return view.extend({ _('Installed Models') ]), E('div', { 'class': 'lai-card-badge' }, - (data.models.models || []).length + ' ' + _('models') + (data.models || []).length + ' ' + _('models') ) ]), E('div', { 'class': 'lai-card-body' }, [ - this.renderModelsList(data.models.models || []) + this.renderModelsList(data.models || []) ]) ]) ]), diff --git a/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/models.js b/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/models.js index fcb960b4..abac5606 100644 --- a/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/models.js +++ b/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/models.js @@ -35,12 +35,20 @@ return view.extend({ title: _('LocalAI Models'), load: function() { - return callModels(); + return callModels().then(function(result) { + console.log('LocalAI models RPC result:', JSON.stringify(result)); + return result; + }).catch(function(err) { + console.error('LocalAI models RPC error:', err); + return { models: [] }; + }); }, render: function(data) { var self = this; - var models = data.models || []; + console.log('LocalAI render data:', JSON.stringify(data)); + // RPC with expect returns array directly, not {models: [...]} + var models = Array.isArray(data) ? data : (data && data.models ? data.models : []); var presets = [ { name: 'tinyllama', desc: 'TinyLlama 1.1B - Ultra-lightweight', size: '669 MB' },