Changeset 0.17.0 (#75)

This commit is contained in:
2026-02-27 16:25:39 +00:00
parent 8bb77710b9
commit c9141a6896
37 changed files with 2778 additions and 968 deletions

View File

@@ -193,6 +193,8 @@ function ensureAdminPresetForm() {
prefix: 'adminPreset',
showAvatar: true,
showProviderConfig: true,
showKBPicker: true,
kbScope: 'admin',
onSubmit: (vals) => createAdminPreset(vals),
onCancel: () => {
container.style.display = 'none';
@@ -263,6 +265,10 @@ function editAdminPreset(id) {
document.getElementById('adminAddPresetForm').style.display = '';
form.setValues(p);
form.setSubmitLabel('Update');
// Load KB bindings (v0.17.0)
if (form.kbPicker) {
loadPersonaKBs(id, form.kbPicker, '/api/v1/admin');
}
}
async function createAdminPreset(vals) {
@@ -299,6 +305,12 @@ async function createAdminPreset(vals) {
catch (e) { console.warn('Preset avatar upload failed:', e.message); }
}
// Save KB bindings (v0.17.0)
if (presetId && vals._kbValues && _adminPresetForm?.kbPicker) {
try { await API.adminSetPresetKBs(presetId, vals._kbValues); }
catch (e) { console.warn('Preset KB binding failed:', e.message); }
}
_editingPresetId = null;
document.getElementById('adminAddPresetForm').style.display = 'none';
if (_adminPresetForm) {
@@ -646,6 +658,20 @@ function _initAdminListeners() {
await UI.loadAdminExtensions();
} catch (e) { UI.toast(e.message, 'error'); }
});
// Role fallback alerts (v0.17.0) — show admin banner when fallback fires
if (typeof Events !== 'undefined') {
Events.on('role.fallback', (payload) => {
const banner = document.getElementById('roleFallbackBanner');
if (!banner) return;
const msg = payload?.message || 'A model role is using its fallback provider.';
banner.querySelector('.fallback-msg').textContent = msg;
banner.style.display = '';
// Auto-dismiss after 60s
clearTimeout(banner._dismissTimer);
banner._dismissTimer = setTimeout(() => { banner.style.display = 'none'; }, 60000);
});
}
}
// ── Extension admin actions (global scope for onclick) ──