eklavya 1.84.0 → 1.84.1
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.
package/README.md
CHANGED
|
@@ -52,7 +52,7 @@ Code's learning loop.
|
|
|
52
52
|
|---|---|
|
|
53
53
|
| Learner state and concepts | `get_learner_profile`, `log_session_concepts`, `upsert_concepts`, `get_concept_graph` |
|
|
54
54
|
| Questions and assessment (automatic questions wait for a code change, not a `git pull`; see `quiz.only_on_changes`) | `get_session_quiz_plan`, `record_attempt`, `get_gate_status` |
|
|
55
|
-
| Quiz side panel (experimental) | `present_question` for the model; `panel_sync` and `panel_answer`, called only by the panel mod, never by the model; its header stacks the mark above the topic in a pane under 60 cells wide |
|
|
55
|
+
| Quiz side panel (experimental) | `present_question` for the model; `panel_sync` and `panel_answer`, called only by the panel mod, never by the model; its header stacks the mark above the topic in a pane under 60 cells wide; on the desktop app each option's note is its own line under the option, and a click on the option picks it |
|
|
56
56
|
| Settings | `get_config`, `set_config` |
|
|
57
57
|
| Find and read memory (`memory_status` includes a `health` verdict with reasons) | `memory_search`, `memory_get`, `memory_timeline`, `memory_file_history`, `memory_status` |
|
|
58
58
|
| Maintain memory | `memory_write`, `memory_correct`, `memory_delete`, `memory_collections` |
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eklavya",
|
|
3
3
|
"displayName": "Eklavya",
|
|
4
|
-
"version": "1.84.
|
|
4
|
+
"version": "1.84.1",
|
|
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"
|
|
@@ -434,7 +434,7 @@ export const register: Register = on => {
|
|
|
434
434
|
))}
|
|
435
435
|
</Box>
|
|
436
436
|
)
|
|
437
|
-
// One answer: a bordered block. The Button holds the
|
|
437
|
+
// One answer: a bordered block. The Button holds the answer text, so a press on it
|
|
438
438
|
// selects; the border and fill show the pick, and nothing implies it is
|
|
439
439
|
// right. The desktop app gives the text more room inside the border; the padding itself is not
|
|
440
440
|
// pressable, since a Button takes none. The terminal keeps its tight cards.
|
|
@@ -501,11 +501,12 @@ export const register: Register = on => {
|
|
|
501
501
|
const locked = s.step === 'grading'
|
|
502
502
|
// Submit looks disabled until there is something to send; pressing it then does nothing.
|
|
503
503
|
const hasDraft = s.draft.other ? s.draft.text.trim().length > 0 : s.draft.picked !== null
|
|
504
|
-
//
|
|
504
|
+
// In the terminal the answer and its note are the Button's own inline Text, so a press anywhere on them
|
|
505
|
+
// selects. The desktop app draws only a Button's label (docs/verified-schemas.md row 17), so there the
|
|
506
|
+
// note is a Text under the Button and only the answer selects.
|
|
505
507
|
// Markdown marks cannot show inside a Button, so the code and bold marks are dropped from both.
|
|
506
508
|
// The pick shows by the card's border and fill, never a mark in the text, so picking moves nothing.
|
|
507
|
-
//
|
|
508
|
-
// its plain Button draws.
|
|
509
|
+
// The terminal indents the note under the `1: ` its plain Button draws.
|
|
509
510
|
// `wrap` asks the app to wrap a long answer rather than cut it off.
|
|
510
511
|
const answer = (id: string, key: string, hotkey: string, label: string, chosen: boolean, note?: string) => (
|
|
511
512
|
<Button
|
|
@@ -516,7 +517,7 @@ export const register: Register = on => {
|
|
|
516
517
|
onPress={() => (locked ? undefined : id === 'other' ? chooseOther($) : pick($, id))}
|
|
517
518
|
>
|
|
518
519
|
<Text wrap="wrap" bold={chosen} color={chosen && id !== 'other' ? PICKED.text : undefined}>{label}</Text>
|
|
519
|
-
{note ? <Text wrap="wrap" dimColor={!chosen} color={chosen ? PICKED.note : undefined}>{`\n
|
|
520
|
+
{note && !app ? <Text wrap="wrap" dimColor={!chosen} color={chosen ? PICKED.note : undefined}>{`\n ${note}`}</Text> : null}
|
|
520
521
|
</Button>
|
|
521
522
|
)
|
|
522
523
|
const options = q.options.map((o, i) => {
|
|
@@ -525,7 +526,10 @@ export const register: Register = on => {
|
|
|
525
526
|
o.id,
|
|
526
527
|
chosen,
|
|
527
528
|
answer(o.id, `opt-${o.id}`, String(i + 1), plainLabel(o.label), chosen, o.note ? plainLabel(o.note) : undefined),
|
|
528
|
-
|
|
529
|
+
// The desktop app draws only a Button's label, not its inline children, so there the note sits under the button.
|
|
530
|
+
app && o.note
|
|
531
|
+
? [<Text key={`note-${o.id}`} wrap="wrap" dimColor={!chosen} color={chosen ? PICKED.note : undefined}>{plainLabel(o.note)}</Text>]
|
|
532
|
+
: [],
|
|
529
533
|
)
|
|
530
534
|
})
|
|
531
535
|
|
package/package.json
CHANGED