Skip to content

Commit 36d728e

Browse files
kagura-agentKagura Chen
andauthored
fix: resolve SkillsFlow skills display issue (fixes #12) (#23)
Three issues prevented skills from showing in the SkillsFlow panel: 1. Skills list was loaded only once (cached by flowsLoaded flag). After installing skills via the marketplace, returning to SkillsFlow would still show 'No skills installed' since the cached empty result was never refreshed. Fix: always reload skills when switching to the SkillsFlow tab. 2. When files_changed was broadcast after skill installation, it only refreshed the file tree but not the SkillsFlow skills panel. Fix: also refresh flow skills when files_changed fires while viewing SkillsFlow. 3. The gmail-email built-in skill was missing YAML frontmatter (name and description), so discoverSkills() silently skipped it. Fix: add proper frontmatter. 4. Error handling in loadFlowSkills() silently swallowed errors with an empty catch. Fix: log errors to console for debugging. Co-authored-by: Kagura Chen <daniyuu19@sjtu.edu.cn>
1 parent 619b6cf commit 36d728e

2 files changed

Lines changed: 8 additions & 3 deletions

File tree

skills/gmail-email/SKILL.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
---
2+
name: gmail-email
3+
description: Send emails via Gmail SMTP using App Password authentication.
4+
---
5+
16
# Gmail Email Skill
27

38
Send emails via Gmail SMTP.

src/voice/ui.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1378,7 +1378,7 @@ <h3 style="margin:0;color:#8b949e;font-size:12px;text-transform:uppercase;letter
13781378
if(v==='integrations'&&!integrationsLoaded){loadToolkits();integrationsLoaded=true;}
13791379
if(v==='comms'&&!commsLoaded){loadTelegramStatus();loadWhatsAppStatus();loadPhoneWebhookUrl();commsLoaded=true;}
13801380
if(v==='skills'&&!skillsLoaded){document.getElementById('skillsFrame').src='/api/skills-mp/proxy?path=/';skillsLoaded=true;}
1381-
if(v==='flows'&&!flowsLoaded){loadFlowSkills();loadSavedFlows();flowsLoaded=true;}
1381+
if(v==='flows'){loadFlowSkills();loadSavedFlows();flowsLoaded=true;}
13821382
if(v==='scheduler'&&!schedulerLoaded){loadSchedules();schedulerLoaded=true;}
13831383
}
13841384
// Skills MP install handler
@@ -1427,7 +1427,7 @@ <h3 style="margin:0;color:#8b949e;font-size:12px;text-transform:uppercase;letter
14271427
flowSkillsCache = d.skills || [];
14281428
document.getElementById('flowSkillsSearch').value = '';
14291429
renderFlowSkillsList(flowSkillsCache);
1430-
}).catch(function(){});
1430+
}).catch(function(err){ console.error('loadFlowSkills error:', err); });
14311431
refreshFlowCommsStatus();
14321432
}
14331433

@@ -1970,7 +1970,7 @@ <h3 style="margin:0;color:#8b949e;font-size:12px;text-transform:uppercase;letter
19701970
thinkingEl.querySelector('.thinking-text').textContent+=m.text;
19711971
conv.scrollTop=conv.scrollHeight;
19721972
break;
1973-
case'files_changed':refreshFileTree();break;
1973+
case'files_changed':refreshFileTree();if(currentView==='flows'){loadFlowSkills();}break;
19741974
case'error':appendConv('Error: '+escHtml(m.message),'system');break;
19751975
case'schedule_start':
19761976
var schEl=document.createElement('div');

0 commit comments

Comments
 (0)