diff --git a/Endpoints/SharedEndpoint.cs b/Endpoints/SharedEndpoint.cs
index cbb0acb..0c52d7e 100644
--- a/Endpoints/SharedEndpoint.cs
+++ b/Endpoints/SharedEndpoint.cs
@@ -126,7 +126,8 @@ public static class SharedEndpoint
m.Id,
m.Role,
m.Content,
- m.CreatedAt
+ m.CreatedAt,
+ m.Iteration
})
.ToList();
diff --git a/wwwroot/css/form.css b/wwwroot/css/form.css
index 00709ed..3f34d1c 100644
--- a/wwwroot/css/form.css
+++ b/wwwroot/css/form.css
@@ -10,6 +10,11 @@
margin-top: var(--box-spacing);
}
+.more {
+ margin: var(--box-spacing) auto;
+ cursor: pointer;
+}
+
.avatar-section {
display: flex;
align-items: center;
@@ -55,7 +60,7 @@
.form-actions {
display: flex;
gap: var(--badge-spacing);
- margin-block: var(--box-spacing) calc(var(--page-spacing) * 4);
+ margin-block: var(--box-spacing) calc(var(--page-spacing) * 2);
}
/* ── Custom Commands ── */
@@ -211,12 +216,6 @@ label.skill-item {
color: var(--dangerous);
}
-.profile-divider {
- border: none;
- border-top: var(--border-width) solid var(--f2-border);
- margin: var(--box-spacing) 0;
-}
-
.danger-btn {
color: var(--dangerous);
border-color: currentcolor;
diff --git a/wwwroot/index.html b/wwwroot/index.html
index b272ae8..cb0652c 100644
--- a/wwwroot/index.html
+++ b/wwwroot/index.html
@@ -108,34 +108,38 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
Weitere Einstellungen
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
Erstelle einen Bot via @BotFather
-
-
-
-
-
-
Kein Status verfügbar
-
-
-
+
+
Erstelle einen Bot via @BotFather
+
+
+
+
+
+
Kein Status verfügbar
+
+
+
+
+
-
@@ -162,57 +166,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/wwwroot/js/pages/agent-page.js b/wwwroot/js/pages/agent-page.js
index 33cadd9..a3afa63 100644
--- a/wwwroot/js/pages/agent-page.js
+++ b/wwwroot/js/pages/agent-page.js
@@ -36,6 +36,7 @@ registerPage('agent', {
const addCommandBtn = document.getElementById('agentAddCommandBtn');
const skillsSection = document.getElementById('agentSkillsSection');
const skillList = document.getElementById('agentSkillList');
+ const more = document.querySelector('.more');
_agentAvatarData = null;
@@ -120,6 +121,13 @@ registerPage('agent', {
}
});
+ more.addEventListener('click', () => {
+ const content = more.querySelector('[hidden]');
+ while (content.firstChild)
+ more.parentNode.insertBefore(content.firstChild, more);
+ more.remove();
+ });
+
// Speichern
saveBtn.addEventListener('click', async () => {
const data = {
diff --git a/wwwroot/js/pages/session-page.js b/wwwroot/js/pages/session-page.js
index 921050a..3348566 100644
--- a/wwwroot/js/pages/session-page.js
+++ b/wwwroot/js/pages/session-page.js
@@ -30,7 +30,8 @@ registerPage('session', {
const deleteBtn = document.getElementById('sessionDeleteBtn');
const commandsList = document.getElementById('customCommandsList');
const addCommandBtn = document.getElementById('addCommandBtn');
-
+ const more = document.querySelector('.more');
+
_sessionImageData = null;
if (session) {
@@ -125,6 +126,13 @@ registerPage('session', {
}
});
+ more.addEventListener('click', () => {
+ const content = more.querySelector('[hidden]');
+ while (content.firstChild)
+ more.parentNode.insertBefore(content.firstChild, more);
+ more.remove();
+ });
+
// Workspace Browse
const workspaceBrowse = document.getElementById('sessionWorkspaceBrowse');
if (workspaceBrowse) {
diff --git a/wwwroot/js/pages/shared-page.js b/wwwroot/js/pages/shared-page.js
index 0cc9e0f..fdb40bd 100644
--- a/wwwroot/js/pages/shared-page.js
+++ b/wwwroot/js/pages/shared-page.js
@@ -13,23 +13,18 @@ registerPage('shared', {
const data = await apiGetShared(token);
container.innerHTML = '';
+ let messages = [];
+
if (data.messages && data.messages.length > 0) {
- // Mehrere Nachrichten (Thread mit Kontext)
- data.messages.forEach(msg => {
- const div = document.createElement('div');
- div.className = 'msg ' + (msg.role === 'user' ? 'user' : 'assistant') + ' markdown';
- if (msg.role === 'user') {
- renderUserContent(div, msg.content);
- } else {
- div.innerHTML = renderMarkdown(msg.content);
- parseFluentEmojis(div);
- wrapKreaGalleries(div);
- }
- container.appendChild(div);
- });
+ messages = data.messages;
} else if (data.message) {
- // Einzelne Nachricht
- const msg = data.message;
+ messages = [data.message];
+ }
+
+ // Aufeinanderfolgende Assistant-Text-Messages mergen (wie im Chat)
+ messages = _mergeConsecutiveTexts(messages);
+
+ for (const msg of messages) {
const div = document.createElement('div');
div.className = 'msg ' + (msg.role === 'user' ? 'user' : 'assistant') + ' markdown';
if (msg.role === 'user') {
@@ -57,3 +52,20 @@ registerPage('shared', {
},
destroy: () => {}
});
+
+function _mergeConsecutiveTexts(msgs) {
+ const result = [];
+ for (const msg of msgs) {
+ if (msg.role === 'assistant') {
+ const prev = result[result.length - 1];
+ if (prev && prev.role === 'assistant'
+ && prev.iteration === msg.iteration) {
+ prev.content = (prev.content || '') + ' ' + (msg.content || '');
+ if (msg.createdAt) prev.createdAt = msg.createdAt;
+ continue;
+ }
+ }
+ result.push(Object.assign({}, msg));
+ }
+ return result;
+}