Avatar: Ctrl+V paste + serverseitige Skalierung auf max 256px; Tool-Boxes: Diff-View für edit/write_file, Foldout für alle Tools, stop_reason im Chat; ImageSharp 3.1.12

This commit is contained in:
Meleki committed 2026-02-27 16:46:07 +01:00
1 parent 18b2feef4a
commit e662548d79
13 files changed
+416 -42

No files matched your search

+25
View File
@@ -1,6 +1,7 @@
// ── Agent Page ──
let _agentAvatarData = null;
let _agentPasteHandler = null;
registerPage('agent', {
async init(params) {
@@ -63,6 +64,26 @@ registerPage('agent', {
avatarInput.value = '';
});
// Avatar Paste (Ctrl+V)
document.addEventListener('paste', _agentPasteHandler = (e) => {
const items = e.clipboardData?.items;
if (!items) return;
for (const item of items) {
if (item.type.startsWith('image/')) {
e.preventDefault();
const file = item.getAsFile();
if (!file) return;
const reader = new FileReader();
reader.onload = () => {
_agentAvatarData = reader.result;
avatarPreview.innerHTML = `<img src="${reader.result}" alt="Avatar">`;
};
reader.readAsDataURL(file);
return;
}
}
});
// Speichern
saveBtn.addEventListener('click', async () => {
const data = {
@@ -93,6 +114,10 @@ registerPage('agent', {
});
},
destroy() {
if (_agentPasteHandler) {
document.removeEventListener('paste', _agentPasteHandler);
_agentPasteHandler = null;
}
_agentAvatarData = null;
}
});
+25
View File
@@ -1,6 +1,7 @@
// ── Session Edit Page ──
let _sessionImageData = null;
let _sessionPasteHandler = null;
function _createCommandRow(container, name = '', command = '') {
const item = document.createElement('div');
@@ -125,6 +126,26 @@ registerPage('session', {
imageInput.value = '';
});
// Bild Paste (Ctrl+V)
document.addEventListener('paste', _sessionPasteHandler = (e) => {
const items = e.clipboardData?.items;
if (!items) return;
for (const item of items) {
if (item.type.startsWith('image/')) {
e.preventDefault();
const file = item.getAsFile();
if (!file) return;
const reader = new FileReader();
reader.onload = () => {
_sessionImageData = reader.result;
imagePreview.innerHTML = `<img src="${reader.result}" alt="">`;
};
reader.readAsDataURL(file);
return;
}
}
});
// Workspace Browse
const workspaceBrowse = document.getElementById('sessionWorkspaceBrowse');
if (workspaceBrowse) {
@@ -175,6 +196,10 @@ registerPage('session', {
});
},
destroy() {
if (_sessionPasteHandler) {
document.removeEventListener('paste', _sessionPasteHandler);
_sessionPasteHandler = null;
}
_sessionImageData = null;
}
});