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:
1 parent
4e1ed81f37
commit
4ebbeaa818
6 files changed
+133
-96
No files matched your search
@@ -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 = {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
Reference in new issue
Block a user