Changeset 0.13.0 (#64)
This commit is contained in:
177
src/index.html
177
src/index.html
@@ -425,7 +425,7 @@
|
||||
<button class="btn-small" onclick="bulkSetUserModelVisibility(false)" title="Hide all models from selector">Hide All</button>
|
||||
</div>
|
||||
</div>
|
||||
<p class="section-hint" style="margin-bottom:8px">Toggle visibility in your model selector. Hidden models are still accessible through presets.</p>
|
||||
<p class="section-hint" style="margin-bottom:8px">Toggle visibility in your model selector. Hidden models are still accessible through personas.</p>
|
||||
<div id="userModelList" class="model-list-grid"><div class="empty-hint">Loading models...</div></div>
|
||||
</section>
|
||||
</div>
|
||||
@@ -433,7 +433,7 @@
|
||||
<div class="settings-tab-content" id="settingsPersonasTab" style="display:none">
|
||||
<section class="settings-section">
|
||||
<h3 style="font-size:14px;margin-bottom:4px">My Personas</h3>
|
||||
<p class="section-hint" style="margin-bottom:8px">Personal model presets with custom system prompts and settings.</p>
|
||||
<p class="section-hint" style="margin-bottom:8px">Personal model personas with custom system prompts and settings.</p>
|
||||
<div id="userPresetList"><div class="empty-hint">Loading...</div></div>
|
||||
<div id="userAddPresetForm" style="display:none;margin-top:8px" class="admin-inline-form"></div>
|
||||
<button class="btn-small" id="userAddPresetBtn" style="margin-top:6px">+ New Persona</button>
|
||||
@@ -491,7 +491,7 @@
|
||||
<div class="modal-tabs admin-tabs" id="teamAdminTabs">
|
||||
<button class="admin-tab active" data-ttab="members" onclick="UI.switchTeamTab('members')">Members</button>
|
||||
<button class="admin-tab" data-ttab="providers" onclick="UI.switchTeamTab('providers')">Providers</button>
|
||||
<button class="admin-tab" data-ttab="presets" onclick="UI.switchTeamTab('presets')">Presets</button>
|
||||
<button class="admin-tab" data-ttab="presets" onclick="UI.switchTeamTab('presets')">Personas</button>
|
||||
<button class="admin-tab" data-ttab="usage" onclick="UI.switchTeamTab('usage')">Usage</button>
|
||||
<button class="admin-tab" data-ttab="activity" onclick="UI.switchTeamTab('activity')">Activity</button>
|
||||
</div>
|
||||
@@ -558,25 +558,24 @@
|
||||
</div>
|
||||
|
||||
<!-- ── Admin Modal ─────────────────────────── -->
|
||||
<div class="modal-overlay" id="adminModal">
|
||||
<div class="modal modal-wide">
|
||||
<div class="modal-header"><h2>Admin Panel</h2><button class="modal-close" id="adminCloseBtn">✕</button></div>
|
||||
<div class="modal-tabs admin-tabs">
|
||||
<button class="admin-tab active" data-tab="users">Users</button>
|
||||
<button class="admin-tab" data-tab="providers">Providers</button>
|
||||
<button class="admin-tab" data-tab="models">Models</button>
|
||||
<button class="admin-tab" data-tab="presets">Presets</button>
|
||||
<button class="admin-tab" data-tab="teams">Teams</button>
|
||||
<button class="admin-tab" data-tab="settings">Settings</button>
|
||||
<button class="admin-tab" data-tab="roles">Roles</button>
|
||||
<button class="admin-tab" data-tab="usage">Usage</button>
|
||||
<button class="admin-tab" data-tab="extensions">Extensions</button>
|
||||
<button class="admin-tab" data-tab="storage">Storage</button>
|
||||
<button class="admin-tab" data-tab="stats">Stats</button>
|
||||
<button class="admin-tab" data-tab="audit">Audit</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="admin-tab-content" id="adminUsersTab">
|
||||
<!-- ── Admin Panel (fullscreen overlay) ──── -->
|
||||
<div class="admin-panel" id="adminPanel" style="display:none">
|
||||
<div class="admin-topbar">
|
||||
<button class="admin-back" id="adminBackBtn">← Chat</button>
|
||||
<h1 class="admin-title">Admin Panel</h1>
|
||||
<span class="admin-user" id="adminCurrentUser"></span>
|
||||
</div>
|
||||
<div class="admin-categories" id="adminCategories">
|
||||
<button class="admin-cat active" data-cat="people">People</button>
|
||||
<button class="admin-cat" data-cat="ai">AI</button>
|
||||
<button class="admin-cat" data-cat="system">System</button>
|
||||
<button class="admin-cat" data-cat="monitoring">Monitoring</button>
|
||||
</div>
|
||||
<div class="admin-body">
|
||||
<nav class="admin-sidebar" id="adminSidebar"></nav>
|
||||
<main class="admin-main" id="adminMain">
|
||||
<!-- People -->
|
||||
<div class="admin-section-content" id="adminUsersTab" style="display:none">
|
||||
<div class="admin-toolbar">
|
||||
<button class="btn-small btn-primary" id="adminAddUserBtn">+ Add User</button>
|
||||
</div>
|
||||
@@ -593,32 +592,7 @@
|
||||
</div>
|
||||
<div id="adminUserList"></div>
|
||||
</div>
|
||||
<div class="admin-tab-content" id="adminProvidersTab" style="display:none">
|
||||
<div class="admin-toolbar">
|
||||
<button class="btn-small btn-primary" id="adminAddProviderBtn">+ Add Global Provider</button>
|
||||
</div>
|
||||
<div id="adminAddProviderForm" style="display:none" class="admin-inline-form">
|
||||
</div>
|
||||
<div id="adminProviderList"></div>
|
||||
</div>
|
||||
<div class="admin-tab-content" id="adminModelsTab" style="display:none">
|
||||
<div class="admin-toolbar">
|
||||
<button class="btn-small btn-primary" id="adminFetchModelsBtn">⟳ Fetch Models</button>
|
||||
<button class="btn-small" onclick="bulkSetVisibility('enabled')">All Enabled</button>
|
||||
<button class="btn-small" onclick="bulkSetVisibility('team')">All Team</button>
|
||||
<button class="btn-small" onclick="bulkSetVisibility('disabled')">All Disabled</button>
|
||||
<span class="admin-hint" id="adminModelsHint"></span>
|
||||
</div>
|
||||
<div id="adminModelList"></div>
|
||||
</div>
|
||||
<div class="admin-tab-content" id="adminPresetsTab" style="display:none">
|
||||
<div class="admin-toolbar">
|
||||
<button class="btn-small btn-primary" id="adminAddPresetBtn">+ New Global Preset</button>
|
||||
</div>
|
||||
<div id="adminAddPresetForm" style="display:none" class="admin-inline-form"></div>
|
||||
<div id="adminPresetList"></div>
|
||||
</div>
|
||||
<div class="admin-tab-content" id="adminTeamsTab" style="display:none">
|
||||
<div class="admin-section-content" id="adminTeamsTab" style="display:none">
|
||||
<div class="admin-toolbar">
|
||||
<button class="btn-small btn-primary" id="adminAddTeamBtn">+ New Team</button>
|
||||
</div>
|
||||
@@ -630,7 +604,6 @@
|
||||
<div class="form-row"><button class="btn-small btn-primary" id="adminCreateTeamBtn">Create</button><button class="btn-small" id="adminCancelTeamBtn">Cancel</button></div>
|
||||
</div>
|
||||
<div id="adminTeamList"></div>
|
||||
<!-- Team detail / member management (shown when editing a team) -->
|
||||
<div id="adminTeamDetail" style="display:none">
|
||||
<button class="notes-back-btn" id="adminTeamBackBtn">← Back to teams</button>
|
||||
<h3 id="adminTeamDetailName" style="margin:8px 0 12px;font-size:15px"></h3>
|
||||
@@ -653,7 +626,42 @@
|
||||
<div id="adminMemberList"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="admin-tab-content" id="adminSettingsTab" style="display:none">
|
||||
<div class="admin-section-content" id="adminRolesTab" style="display:none">
|
||||
<p style="color:var(--text-muted);margin:0 0 12px">Configure system model roles. Each role has a primary and optional fallback model.</p>
|
||||
<div id="adminRolesContent">
|
||||
<div class="loading">Loading roles...</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- AI -->
|
||||
<div class="admin-section-content" id="adminProvidersTab" style="display:none">
|
||||
<div class="admin-toolbar">
|
||||
<button class="btn-small btn-primary" id="adminAddProviderBtn">+ Add Global Provider</button>
|
||||
</div>
|
||||
<div id="adminAddProviderForm" style="display:none" class="admin-inline-form">
|
||||
</div>
|
||||
<div id="adminProviderList"></div>
|
||||
</div>
|
||||
<div class="admin-section-content" id="adminModelsTab" style="display:none">
|
||||
<div class="admin-toolbar">
|
||||
<button class="btn-small btn-primary" id="adminFetchModelsBtn">⟳ Fetch Models</button>
|
||||
<button class="btn-small" onclick="bulkSetVisibility('enabled')">All Enabled</button>
|
||||
<button class="btn-small" onclick="bulkSetVisibility('team')">All Team</button>
|
||||
<button class="btn-small" onclick="bulkSetVisibility('disabled')">All Disabled</button>
|
||||
<span class="admin-hint" id="adminModelsHint"></span>
|
||||
</div>
|
||||
<div id="adminModelList"></div>
|
||||
</div>
|
||||
<div class="admin-section-content" id="adminPresetsTab" style="display:none">
|
||||
<div class="admin-toolbar">
|
||||
<button class="btn-small btn-primary" id="adminAddPresetBtn">+ New Global Persona</button>
|
||||
</div>
|
||||
<div id="adminAddPresetForm" style="display:none" class="admin-inline-form"></div>
|
||||
<div id="adminPresetList"></div>
|
||||
</div>
|
||||
|
||||
<!-- System -->
|
||||
<div class="admin-section-content" id="adminSettingsTab" style="display:none">
|
||||
<section class="settings-section">
|
||||
<h3>System Prompt</h3>
|
||||
<p class="section-hint" style="margin-bottom:6px">Injected into every conversation before user/preset prompts. Users cannot override or disable this.</p>
|
||||
@@ -678,9 +686,9 @@
|
||||
<p class="section-hint">When disabled, users can only use admin-configured global providers.</p>
|
||||
</section>
|
||||
<section class="settings-section">
|
||||
<h3>User Presets</h3>
|
||||
<label class="checkbox-label"><input type="checkbox" id="adminUserPresetsToggle" checked> Allow users to create personal presets</label>
|
||||
<p class="section-hint">When disabled, users can only use admin-created global presets.</p>
|
||||
<h3>User Personas</h3>
|
||||
<label class="checkbox-label"><input type="checkbox" id="adminUserPresetsToggle" checked> Allow users to create personal personas</label>
|
||||
<p class="section-hint">When disabled, users can only use admin-created global personas.</p>
|
||||
</section>
|
||||
<section class="settings-section">
|
||||
<h3>Default Model</h3>
|
||||
@@ -718,38 +726,8 @@
|
||||
</section>
|
||||
<button class="btn-primary btn-small" id="adminSaveSettings">Save Settings</button>
|
||||
</div>
|
||||
|
||||
<!-- ── Roles Tab ─────────────────── -->
|
||||
<div class="admin-tab-content" id="adminRolesTab" style="display:none">
|
||||
<p style="color:var(--text-muted);margin:0 0 12px">Configure system model roles. Each role has a primary and optional fallback model.</p>
|
||||
<div id="adminRolesContent">
|
||||
<div class="loading">Loading roles...</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ── Usage Tab ─────────────────── -->
|
||||
<div class="admin-tab-content" id="adminUsageTab" style="display:none">
|
||||
<div class="admin-toolbar" style="margin-bottom:12px">
|
||||
<select id="usagePeriod" style="min-width:100px">
|
||||
<option value="7d">Last 7 days</option>
|
||||
<option value="30d" selected>Last 30 days</option>
|
||||
<option value="90d">Last 90 days</option>
|
||||
</select>
|
||||
<select id="usageGroupBy" style="min-width:100px">
|
||||
<option value="model">By Model</option>
|
||||
<option value="user">By User</option>
|
||||
<option value="day">By Day</option>
|
||||
<option value="provider">By Provider</option>
|
||||
</select>
|
||||
<button class="btn-secondary btn-small" id="usageRefreshBtn">Refresh</button>
|
||||
</div>
|
||||
<div id="adminUsageTotals"></div>
|
||||
<div id="adminUsageResults"></div>
|
||||
<h3 style="margin-top:16px;font-size:14px">Model Pricing</h3>
|
||||
<div id="adminPricingTable"></div>
|
||||
</div>
|
||||
|
||||
<div class="admin-tab-content" id="adminExtensionsTab" style="display:none">
|
||||
<div class="admin-section-content" id="adminStorageTab" style="display:none"><div id="adminStorageContent"></div></div>
|
||||
<div class="admin-section-content" id="adminExtensionsTab" style="display:none">
|
||||
<div class="admin-toolbar">
|
||||
<button class="btn-small btn-primary" id="adminInstallExtBtn">+ Install Extension</button>
|
||||
</div>
|
||||
@@ -776,9 +754,29 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="admin-tab-content" id="adminStorageTab" style="display:none"><div id="adminStorageContent"></div></div>
|
||||
<div class="admin-tab-content" id="adminStatsTab" style="display:none"><div id="adminStats"></div></div>
|
||||
<div class="admin-tab-content" id="adminAuditTab" style="display:none">
|
||||
|
||||
<!-- Monitoring -->
|
||||
<div class="admin-section-content" id="adminUsageTab" style="display:none">
|
||||
<div class="admin-toolbar" style="margin-bottom:12px">
|
||||
<select id="usagePeriod" style="min-width:100px">
|
||||
<option value="7d">Last 7 days</option>
|
||||
<option value="30d" selected>Last 30 days</option>
|
||||
<option value="90d">Last 90 days</option>
|
||||
</select>
|
||||
<select id="usageGroupBy" style="min-width:100px">
|
||||
<option value="model">By Model</option>
|
||||
<option value="user">By User</option>
|
||||
<option value="day">By Day</option>
|
||||
<option value="provider">By Provider</option>
|
||||
</select>
|
||||
<button class="btn-secondary btn-small" id="usageRefreshBtn">Refresh</button>
|
||||
</div>
|
||||
<div id="adminUsageTotals"></div>
|
||||
<div id="adminUsageResults"></div>
|
||||
<h3 style="margin-top:16px;font-size:14px">Model Pricing</h3>
|
||||
<div id="adminPricingTable"></div>
|
||||
</div>
|
||||
<div class="admin-section-content" id="adminAuditTab" style="display:none">
|
||||
<div class="admin-toolbar" style="margin-bottom:8px">
|
||||
<select id="auditFilterAction" style="min-width:140px"><option value="">All actions</option></select>
|
||||
<select id="auditFilterResource" style="min-width:120px">
|
||||
@@ -798,7 +796,8 @@
|
||||
<button class="btn-small" id="auditNextBtn">Next →</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="admin-section-content" id="adminStatsTab" style="display:none"><div id="adminStats"></div></div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user