@timmeck/brain-core 2.36.33 → 2.36.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -554,6 +554,23 @@ canvas{display:block;width:100%;height:100%}
554
554
  </div>
555
555
  <div id="userTopTools" style="margin-top:12px"></div>
556
556
  </div>
557
+
558
+ <!-- Feature Recommender -->
559
+ <div class="section">
560
+ <div class="section-title"><span class="icon">&#x2B50;</span> Feature Recommender — <span data-t="Was Brain sich wünscht">Was Brain sich wünscht</span></div>
561
+ <p style="font-size:12px;color:var(--text-dim);margin-bottom:12px" data-t="Brain erkennt was ihm fehlt und sucht nach passenden Features aus absorbierten Repos.">Brain erkennt was ihm fehlt und sucht nach passenden Features aus absorbierten Repos.</p>
562
+ <div class="grid grid-4">
563
+ <div class="card" style="text-align:center"><div class="card-value" id="int-rec-total" style="color:var(--cyan)">0</div><div class="card-sub" data-t="Wünsche">Wünsche</div></div>
564
+ <div class="card" style="text-align:center"><div class="card-value" id="int-rec-open" style="color:var(--yellow)">0</div><div class="card-sub" data-t="Offen">Offen</div></div>
565
+ <div class="card" style="text-align:center"><div class="card-value" id="int-rec-matched" style="color:var(--green)">0</div><div class="card-sub" data-t="Gefunden">Gefunden</div></div>
566
+ <div class="card" style="text-align:center"><div class="card-value" id="int-rec-adopted" style="color:var(--purple)">0</div><div class="card-sub" data-t="Übernommen">Übernommen</div></div>
567
+ </div>
568
+ <div class="grid grid-2" style="margin-top:8px">
569
+ <div class="card" style="text-align:center"><div class="card-value" id="int-rec-connections" style="color:var(--text-dim)">0</div><div class="card-sub" data-t="Verbindungen">Verbindungen</div></div>
570
+ <div class="card" style="text-align:center"><div class="card-value" id="int-rec-scan" style="color:var(--text-dim);font-size:14px">—</div><div class="card-sub" data-t="Letzter Scan">Letzter Scan</div></div>
571
+ </div>
572
+ <div id="featureWishlist" style="margin-top:12px"></div>
573
+ </div>
557
574
  </div>
558
575
 
559
576
  <!-- ════ Page 6: Cross-Brain & Borg ═════════════════ -->
@@ -799,6 +816,10 @@ const translations = { en: {
799
816
  'Keine Plugins installiert':'No plugins installed','Geladen':'Loaded','Keine Engines':'No engines',
800
817
  'Strategien':'Strategies','BORG AKTIV':'BORG ACTIVE','gesendet':'sent','empfangen':'received',
801
818
  'Der Lern-Kreislauf':'The Learning Cycle','Aktivität & Missionen':'Activity & Missions','Bewusstsein':'Consciousness',
819
+ 'Was Brain sich wünscht':'What Brain wants','Wünsche':'Wishes','Offen':'Open','Gefunden':'Found','Übernommen':'Adopted',
820
+ 'Verbindungen':'Connections','Letzter Scan':'Last scan','Suche läuft':'Searching','Verworfen':'Dismissed','Priorität':'Priority',
821
+ 'Noch keine Feature-Wünsche — Brain analysiert automatisch':'No feature wishes yet — Brain analyzes automatically',
822
+ 'Brain erkennt was ihm fehlt und sucht nach passenden Features aus absorbierten Repos.':'Brain detects what it needs and searches for matching features from absorbed repos.',
802
823
  }};
803
824
  let currentLang = localStorage.getItem('brain-lang') || 'en';
804
825
  function t(text) { if (currentLang === 'en' && translations.en[text]) return translations.en[text]; return text; }
@@ -1192,6 +1213,39 @@ function renderIntelligence() {
1192
1213
  tools.map((t,i) => `<span class="badge badge-ok" style="margin:2px">${i+1}. ${escHtml(t)}</span>`).join('');
1193
1214
  }
1194
1215
  }
1216
+
1217
+ // Feature Recommender
1218
+ if (d.recommender) {
1219
+ const r = d.recommender;
1220
+ setText('int-rec-total', r.totalWishes || 0);
1221
+ setText('int-rec-open', r.openWishes || 0);
1222
+ setText('int-rec-matched', r.matchedWishes || 0);
1223
+ setText('int-rec-adopted', r.adoptedWishes || 0);
1224
+ setText('int-rec-connections', r.totalConnections || 0);
1225
+ setText('int-rec-scan', r.lastScanAt ? new Date(r.lastScanAt).toLocaleString(getLocale(), {day:'2-digit',month:'2-digit',hour:'2-digit',minute:'2-digit'}) : '—');
1226
+
1227
+ const wishEl = document.getElementById('featureWishlist');
1228
+ const wishes = r.wishlist || [];
1229
+ if (wishes.length) {
1230
+ wishEl.innerHTML = wishes.slice(0, 10).map(w => {
1231
+ const statusColor = w.status === 'matched' ? 'var(--green)' : w.status === 'adopted' ? 'var(--purple)' : w.status === 'dismissed' ? 'var(--text-dim)' : 'var(--yellow)';
1232
+ const statusLabel = w.status === 'matched' ? '&#x2705; ' + escHtml(w.matchedFeatureName || 'Match') : w.status === 'adopted' ? '&#x1F4E6; ' + t('Übernommen') : w.status === 'dismissed' ? '&#x274C; ' + t('Verworfen') : '&#x1F50E; ' + t('Suche läuft');
1233
+ const prio = (w.priority * 100).toFixed(0);
1234
+ return `<div class="card" style="padding:8px 12px;margin-bottom:4px">
1235
+ <div style="display:flex;justify-content:space-between;align-items:center">
1236
+ <span style="font-weight:600;color:var(--cyan)">${escHtml(w.need)}</span>
1237
+ <span style="font-size:11px;color:${statusColor}">${statusLabel}</span>
1238
+ </div>
1239
+ <div style="display:flex;justify-content:space-between;margin-top:4px;font-size:11px;color:var(--text-dim)">
1240
+ <span>${escHtml(w.reason || '')}</span>
1241
+ <span>${t('Priorität')}: ${prio}%</span>
1242
+ </div>
1243
+ </div>`;
1244
+ }).join('');
1245
+ } else {
1246
+ wishEl.innerHTML = `<div class="empty">${t('Noch keine Feature-Wünsche — Brain analysiert automatisch')}</div>`;
1247
+ }
1248
+ }
1195
1249
  }
1196
1250
 
1197
1251
  // ── Knowledge Growth ──────────────────────────────────────
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@timmeck/brain-core",
3
- "version": "2.36.33",
3
+ "version": "2.36.34",
4
4
  "description": "Shared core infrastructure for the Brain ecosystem — IPC, MCP, CLI, DB connection, and utilities",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",