eklavya 1.69.4 → 1.69.5
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eklavya",
|
|
3
3
|
"displayName": "Eklavya",
|
|
4
|
-
"version": "1.69.
|
|
4
|
+
"version": "1.69.5",
|
|
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"
|
|
@@ -20,6 +20,8 @@ export const TIER: Record<number, string> = { 1: 'recall', 2: 'mechanism', 3: 'j
|
|
|
20
20
|
|
|
21
21
|
/** Brand verdigris (`--vd-300`): the selected card's border and the name. */
|
|
22
22
|
export const BRAND = '#79D5C4'
|
|
23
|
+
/** The fill and text of the picked answer: set together so the contrast holds in a light or a dark theme. */
|
|
24
|
+
export const PICKED = { bg: '#1E5A52', text: '#FFFFFF', note: '#C9E8E3' }
|
|
23
25
|
|
|
24
26
|
/**
|
|
25
27
|
* The logo: the Claude mascot (orange) holding an Eklavya bow and arrow (white), drawn on a
|
|
@@ -3,6 +3,7 @@ import type { EngineInterface, Register } from 'claude-code'
|
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
BRAND,
|
|
6
|
+
PICKED,
|
|
6
7
|
EMPTY,
|
|
7
8
|
EXPLAINER,
|
|
8
9
|
NEXT_PROMPT,
|
|
@@ -419,6 +420,7 @@ export const register: Register = on => {
|
|
|
419
420
|
// One answer: a bordered block. The Button holds the whole answer text, so a press anywhere on it
|
|
420
421
|
// selects; the border and a tick show the pick, and nothing implies it is right. The desktop app gives
|
|
421
422
|
// the text more room inside the border; the terminal keeps its tight cards.
|
|
423
|
+
// Other is never filled: the learner types inside it, in the host's own text colour, which a fixed fill could hide.
|
|
422
424
|
const card = (id: string, selected: boolean, button: unknown, body: unknown[], roomy = false) => (
|
|
423
425
|
<Box
|
|
424
426
|
key={`card-${id}`}
|
|
@@ -426,8 +428,9 @@ export const register: Register = on => {
|
|
|
426
428
|
paddingX={app ? 2 : 1}
|
|
427
429
|
paddingY={app || roomy ? 1 : 0}
|
|
428
430
|
gap={roomy ? 1 : 0}
|
|
429
|
-
borderStyle=
|
|
431
|
+
borderStyle={selected ? 'bold' : 'single'}
|
|
430
432
|
borderColor={selected ? BRAND : 'inactive'}
|
|
433
|
+
backgroundColor={selected && id !== 'other' ? PICKED.bg : undefined}
|
|
431
434
|
>
|
|
432
435
|
{button}
|
|
433
436
|
{body}
|
|
@@ -480,29 +483,33 @@ export const register: Register = on => {
|
|
|
480
483
|
const locked = s.step === 'grading'
|
|
481
484
|
// Submit looks disabled until there is something to send; pressing it then does nothing.
|
|
482
485
|
const hasDraft = s.draft.other ? s.draft.text.trim().length > 0 : s.draft.picked !== null
|
|
483
|
-
//
|
|
484
|
-
|
|
486
|
+
// The answer and its note are the Button's own inline Text, so a press anywhere on them selects.
|
|
487
|
+
// Markdown marks cannot show inside a Button, so the code and bold marks are dropped from both.
|
|
488
|
+
const answer = (id: string, key: string, hotkey: string, label: string, chosen: boolean, note?: string) => (
|
|
485
489
|
<Button
|
|
486
490
|
key={key}
|
|
487
491
|
plain
|
|
488
492
|
hotkey={hotkey}
|
|
489
|
-
label={
|
|
493
|
+
label={label}
|
|
490
494
|
onPress={() => (locked ? undefined : id === 'other' ? chooseOther($) : pick($, id))}
|
|
491
|
-
|
|
495
|
+
>
|
|
496
|
+
<Text bold={chosen} color={chosen && id !== 'other' ? PICKED.text : undefined}>{`${chosen ? '✓ ' : ''}${label}`}</Text>
|
|
497
|
+
{note ? <Text dimColor={!chosen} color={chosen ? PICKED.note : undefined}>{`\n ${note}`}</Text> : null}
|
|
498
|
+
</Button>
|
|
492
499
|
)
|
|
493
500
|
const options = q.options.map((o, i) => {
|
|
494
501
|
const chosen = !s.draft.other && s.draft.picked === o.id
|
|
495
502
|
return card(
|
|
496
503
|
o.id,
|
|
497
504
|
chosen,
|
|
498
|
-
answer(o.id, `opt-${o.id}`, String(i + 1), plainLabel(o.label), chosen),
|
|
499
|
-
[
|
|
505
|
+
answer(o.id, `opt-${o.id}`, String(i + 1), plainLabel(o.label), chosen, o.note ? plainLabel(o.note) : undefined),
|
|
506
|
+
[],
|
|
500
507
|
)
|
|
501
508
|
})
|
|
502
509
|
|
|
503
510
|
return frame(
|
|
504
511
|
stem,
|
|
505
|
-
<Box flexDirection="column" gap={app ?
|
|
512
|
+
<Box flexDirection="column" gap={app ? 2 : 0}>
|
|
506
513
|
{options}
|
|
507
514
|
{card(
|
|
508
515
|
'other',
|
package/package.json
CHANGED