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:
1 parent
18b2feef4a
commit
e662548d79
13 files changed
+416
-42
No files matched your search
@@ -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;
|
||||
}
|
||||
});
|
||||
@@ -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;
|
||||
}
|
||||
});
|
||||
Reference in new issue
Block a user