Add War Room voice meeting, fix chat overlay, and ship 5 cyan UI themes.

Voice Room lets humans talk with agents via Whisper/TTS; chat typing no longer blocked by a full-screen overlay, attachments/avatars are larger, and Settings exposes five vivid mid-dark cyan/blue themes for the whole cockpit.
This commit is contained in:
Aissa
2026-08-16 15:49:16 +00:00
parent 1dd607b060
commit 910ba465d7
16 changed files with 2162 additions and 139 deletions
+48
View File
@@ -15,6 +15,7 @@
{% if can_manage_users %}
<a href="/settings?tab=users" class="settings-tab {% if active_tab == 'users' %}active{% endif %}">Gebruikers</a>
{% endif %}
<a href="/settings?tab=themes" class="settings-tab {% if active_tab == 'themes' %}active{% endif %}">Themes</a>
<a href="/settings?tab=general" class="settings-tab {% if active_tab == 'general' %}active{% endif %}">General</a>
</nav>
@@ -282,6 +283,26 @@
</template>
</div>
</section>
{% elif active_tab == 'themes' %}
<section class="panel settings-panel" x-data="flkThemesPage()" x-init="init()">
<div class="settings-panel-head">
<div>
<h2>UI Themes</h2>
<p class="page-tip">Kies een kleurrijk cyaan/blauw thema voor de hele cockpit. Direct toegepast op alle pagina's.</p>
</div>
</div>
<div class="flk-theme-grid">
<template x-for="t in themes" :key="t.id">
<button type="button" class="flk-theme-card" :class="{ 'is-active': current === t.id }" @click="select(t.id)">
<div class="flk-theme-swatch" :style="swatch(t.id)"></div>
<strong x-text="t.name"></strong>
<small x-text="t.desc"></small>
</button>
</template>
</div>
</section>
{% elif active_tab == 'general' %}
<section class="panel settings-panel">
<h2>General</h2>
@@ -293,6 +314,33 @@
{% endblock %}
{% block scripts %}
<script>
function flkThemesPage() {
return {
themes: (window.FlkThemes && window.FlkThemes.list) || [],
current: 'ocean',
init() {
this.current = (window.FlkThemes && window.FlkThemes.current()) || 'ocean';
if (window.FlkThemes) window.FlkThemes.apply(this.current);
},
select(id) {
this.current = window.FlkThemes.apply(id);
if (window.Cockpit) Cockpit.toast('Theme: ' + id, 'ok');
},
swatch(id) {
var map = {
ocean: 'linear-gradient(135deg,#07131f,#123049 40%,#22d3ee)',
aurora: 'linear-gradient(135deg,#0a1020,#1a2550 45%,#a78bfa 75%,#22d3ee)',
neon: 'linear-gradient(135deg,#050b14,#10243f 40%,#06b6d4 70%,#e879f9)',
glacier: 'linear-gradient(135deg,#0b1522,#1a2f4a 45%,#38bdf8 80%,#7dd3fc)',
cobalt: 'linear-gradient(135deg,#08101c,#172642 40%,#3b82f6 70%,#22d3ee)'
};
return 'background:' + (map[id] || map.ocean);
}
};
}
</script>
<script>
function socialSettingsPage() {
const META = {