feat: shared-page message merging + UI reorganization

Shared Page:
- Merge consecutive assistant text messages (same iteration)
- Add iteration field to thread API response
- Unified rendering for single/thread messages

UI Reorganization (manual changes):
- Session + Agent forms: collapsible 'Weitere Einstellungen' section
- Agent defaults: tool_choice unchecked, web_search 2025, model opus-4-6
- Profile: default-path field hidden, divider removed
- Form spacing adjustments, .more toggle style
This commit is contained in:
Meleki committed 2026-03-06 08:52:27 +01:00
1 parent 4e1ed81f37
commit 4ebbeaa818
6 files changed
+133 -96

No files matched your search

+27 -15
View File
@@ -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;
}