diff --git a/src/channels/web/static/app.js b/src/channels/web/static/app.js
index a2fb7ce4..435b2d4a 100644
--- a/src/channels/web/static/app.js
+++ b/src/channels/web/static/app.js
@@ -5181,6 +5181,14 @@ function loadInferenceSettings() {
title.textContent = I18n.t('cfg.group.llm');
group.appendChild(title);
+ var notice = document.createElement('div');
+ notice.className = 'config-notice';
+ notice.id = 'llm-restart-notice';
+ var restartNoticeEl = document.getElementById('config-restart-notice');
+ notice.style.display = (restartNoticeEl && restartNoticeEl.style.display !== 'none') ? 'flex' : 'none';
+ notice.innerHTML = '\u26A0' + escapeHtml(I18n.t('config.restartNotice')) + '';
+ group.appendChild(notice);
+
var backendRow = document.createElement('div');
backendRow.className = 'settings-row';
backendRow.innerHTML =
@@ -6338,6 +6346,8 @@ function setActiveProvider(id) {
loadInferenceSettings();
scrollToProviders();
document.getElementById('config-restart-notice').style.display = 'flex';
+ var llmNotice = document.getElementById('llm-restart-notice');
+ if (llmNotice) llmNotice.style.display = 'flex';
showToast(I18n.t('config.providerActivated', { name: id }));
})
.catch((e) => showToast(I18n.t('error.unknown') + ': ' + e.message, 'error'));
@@ -6563,6 +6573,8 @@ document.getElementById('save-provider-btn').addEventListener('click', () => {
scrollToProviders();
if (isActive) {
document.getElementById('config-restart-notice').style.display = 'flex';
+ var llmNotice = document.getElementById('llm-restart-notice');
+ if (llmNotice) llmNotice.style.display = 'flex';
}
showToast(I18n.t('config.providerConfigured', { name: id }));
})
@@ -6616,6 +6628,8 @@ document.getElementById('save-provider-btn').addEventListener('click', () => {
scrollToProviders();
if (isActive) {
document.getElementById('config-restart-notice').style.display = 'flex';
+ var llmNotice = document.getElementById('llm-restart-notice');
+ if (llmNotice) llmNotice.style.display = 'flex';
}
showToast(I18n.t('config.providerUpdated', { name }));
}).catch((e) => {
diff --git a/src/channels/web/static/style.css b/src/channels/web/static/style.css
index 7ce84e80..345f7474 100644
--- a/src/channels/web/static/style.css
+++ b/src/channels/web/static/style.css
@@ -2801,10 +2801,22 @@ body {
padding: var(--space-4);
}
+#settings-inference > .extensions-container {
+ display: flex;
+ flex-direction: column;
+}
+
.extensions-section {
margin-bottom: 24px;
}
+#providers-section {
+ flex: 1;
+ min-height: 0;
+ display: flex;
+ flex-direction: column;
+}
+
.extensions-section h3 {
font-size: var(--text-xs);
font-weight: 600;
@@ -5484,6 +5496,8 @@ body.theme-transition *:not(svg):not(path):not(line):not(circle):not(rect) {
display: flex;
flex-direction: column;
gap: 8px;
+ min-height: 420px;
+ overflow-y: auto;
}
.provider-card {