PROMPT.md-based skill injection, scroll-on-image-load fix, skill availability UI
- SkillService: read PROMPT.md instead of SKILL.md for system prompt injection - SkillInfo: add HasPromptMd field, skills without PROMPT.md are not injectable - Agent form: disable checkbox + warning for skills missing PROMPT.md - Thumbnail size: 320px (was 300px) - Chat: _scrollOnImages() re-scrolls after lazy-loaded images finish loading - CSS: skill-unavailable/warning styling, adjusted thumb dimensions
This commit is contained in:
1 parent
8d86406037
commit
40e56acc30
6 files changed
+46
-15
No files matched your search
@@ -185,14 +185,17 @@ function renderSkillCheckboxes(container, allSkills, assignedSlugs) {
|
||||
}
|
||||
for (const skill of allSkills) {
|
||||
const checked = assignedSlugs.includes(skill.slug) ? 'checked' : '';
|
||||
const disabled = !skill.hasPromptMd ? 'disabled' : '';
|
||||
const version = skill.version ? ` <span class="skill-version">v${skill.version}</span>` : '';
|
||||
const desc = skill.description ? `<span class="skill-desc">${skill.description}</span>` : '';
|
||||
const warning = !skill.hasPromptMd ? '<span class="skill-warning">⚠ PROMPT.md fehlt – Skill nicht verwendbar</span>' : '';
|
||||
const row = document.createElement('label');
|
||||
row.className = 'skill-item';
|
||||
row.className = 'skill-item' + (!skill.hasPromptMd ? ' skill-unavailable' : '');
|
||||
row.innerHTML = `
|
||||
<input type="checkbox" value="${skill.slug}" ${checked}>
|
||||
<input type="checkbox" value="${skill.slug}" ${checked} ${disabled}>
|
||||
<span class="skill-name">${skill.name}${version}</span>
|
||||
${desc}
|
||||
${warning}
|
||||
`;
|
||||
container.appendChild(row);
|
||||
}
|
||||
|
||||
@@ -79,6 +79,16 @@ function scrollDown() {
|
||||
});
|
||||
}
|
||||
|
||||
function _scrollOnImages(container) {
|
||||
var imgs = container.querySelectorAll('img');
|
||||
for (var i = 0; i < imgs.length; i++) {
|
||||
if (!imgs[i].complete) {
|
||||
imgs[i].addEventListener('load', scrollDown);
|
||||
imgs[i].addEventListener('error', scrollDown);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function esc(s) {
|
||||
const d = document.createElement('div');
|
||||
d.textContent = s;
|
||||
@@ -234,6 +244,7 @@ function addAssistantBubble(text, timestamp = '', messageId = null, isMarked = f
|
||||
if (messageId) div.dataset.messageId = messageId;
|
||||
div.innerHTML = renderMarkdown(text);
|
||||
wrapKreaGalleries(div);
|
||||
_scrollOnImages(div);
|
||||
_addReplyButton(div);
|
||||
_addMarkButton(div, messageId, isMarked);
|
||||
chatEl().appendChild(div);
|
||||
@@ -299,6 +310,7 @@ function endStreamBubble() {
|
||||
else {
|
||||
_streamDiv.innerHTML = renderMarkdown(_streamText);
|
||||
wrapKreaGalleries(_streamDiv);
|
||||
_scrollOnImages(_streamDiv);
|
||||
}
|
||||
}
|
||||
_streamDiv = null;
|
||||
|
||||
Reference in new issue
Block a user