···11+1. eunomia is the website
22+2. eunomia uses deno. never try to use npx or something, you can use `deno x` instead. you can also use node directly if necessary.
···107107 continue;
108108 // dont show activity that is just chore
109109 if (item.content?.includes('chore')) continue;
110110- const desc = description.split('</a>').at(1) || description.split('</a>').pop() || '';
110110+111111+ let repoName = '';
112112+ let message = '';
113113+ let link = item.url;
114114+115115+ if (source === 'github') {
116116+ // try to extract repo from url
117117+ // url format: https://github.com/user/repo/...
118118+ try {
119119+ const url = new URL(item.url || '');
120120+ const parts = url.pathname.split('/').filter(Boolean);
121121+ if (parts.length >= 2) {
122122+ repoName = parts[1]; // just the repo name, e.g. "eunomia"
123123+ }
124124+ } catch {
125125+ /* empty */
126126+ }
127127+128128+ // try to extract commit message from content blockquote
129129+ if (item.content) {
130130+ const match = item.content.match(/<blockquote>(.*?)<\/blockquote>/s);
131131+ if (match && match[1]) {
132132+ message = match[1].trim();
133133+ }
134134+ }
135135+ }
136136+137137+ // fallback or original logic for non-github or failed parsing
138138+ if (!message || !repoName) {
139139+ const desc = description.split('</a>').at(1) || description.split('</a>').pop() || '';
140140+ if (!message) message = desc.replace(/^90-008 /, '');
141141+ // If we couldn't get a clean repo name, we might leave it empty or try to parse from description if needed
142142+ // But for now let's stick to what we found or the original description cleanup
143143+ }
144144+111145 results.push({
112146 source,
113113- description: desc.replace(/^90-008 /, ''),
114114- link: item.url,
147147+ description: repoName && message ? `${repoName}: ${message}` : message,
148148+ link,
115149 date: item.published || item.updated
116150 });
117151 }