eklavya 1.54.3 → 1.55.0

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.
@@ -675,6 +675,10 @@
675
675
  .cmd__copy:focus-visible { outline:none; box-shadow:var(--ring); }
676
676
  .cmd__note { margin:var(--space-2) 0 0; color:var(--dim); font-size:13px; }
677
677
  .starts > .cmd__note { margin-top:var(--space-3); }
678
+ .starts__more > summary { cursor:pointer; color:var(--dim); font-size:13px; padding:var(--space-2) 0; }
679
+ .starts__more > summary:hover { color:var(--spot); }
680
+ .starts__more > summary:focus-visible { outline:none; box-shadow:var(--ring); }
681
+ .starts__more[open] > summary { margin-bottom:var(--space-2); }
678
682
  .sr { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
679
683
 
680
684
  /* One line per item: a name, a quiet second line, and one number on the right. */
@@ -1228,14 +1232,18 @@ function startCommand(concepts, into = null) {
1228
1232
  }).sort((a, b) => b.count - a.count);
1229
1233
  }
1230
1234
 
1231
- /** The commands as copyable blocks under one heading, or nothing. */
1235
+ /** The commands as copyable blocks under one heading, or nothing. Past `START_SHOWN` the rest fold into a native <details>. */
1236
+ const START_SHOWN = 3;
1232
1237
  function startBlocks(title, cmds) {
1233
1238
  if (!cmds.length) return '';
1234
- return `<section class="starts"><div class="head"><h2>${esc(title)}</h2></div>`
1235
- + cmds.map((x) => `<div class="next start">
1239
+ const block = (x) => `<div class="next start">
1236
1240
  <p><strong>${esc(x.name)}</strong> · ${x.count} due</p>
1237
1241
  <div class="cmd"><code>${esc(x.command)}</code><button type="button" class="cmd__copy" data-copy>Copy</button></div>
1238
- ${x.note ? `<p class="cmd__note">${esc(x.note)}</p>` : ''}</div>`).join('')
1242
+ ${x.note ? `<p class="cmd__note">${esc(x.note)}</p>` : ''}</div>`;
1243
+ const rest = cmds.slice(START_SHOWN);
1244
+ return `<section class="starts"><div class="head"><h2>${esc(title)}</h2></div>`
1245
+ + cmds.slice(0, START_SHOWN).map(block).join('')
1246
+ + (rest.length ? `<details class="starts__more"><summary>Show ${rest.length} more · ${rest.reduce((n, x) => n + x.count, 0)} due</summary>${rest.map(block).join('')}</details>` : '')
1239
1247
  + `<p class="cmd__note">Each run asks up to your questions-per-task limit, weakest first. Run it again for the rest.</p>
1240
1248
  <span class="sr" id="copy-live" aria-live="polite"></span></section>`;
1241
1249
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "eklavya",
3
3
  "displayName": "Eklavya",
4
- "version": "1.54.3",
4
+ "version": "1.55.0",
5
5
  "description": "Learn while your agent works. Turns coding-agent generation time into adaptive, Socratic learning grounded in the code being written.",
6
6
  "author": {
7
7
  "name": "Ajay Kumar"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eklavya",
3
- "version": "1.54.3",
3
+ "version": "1.55.0",
4
4
  "description": "Learn while your agent works — local knowledge graph, spaced repetition, and quiz gating for agent-assisted development.",
5
5
  "license": "MIT",
6
6
  "repository": {