@memoring/cli 0.10.0 → 0.11.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.
- package/dist/commands/deck.js +8 -38
- package/dist/main.js +2 -2
- package/package.json +1 -1
- package/skills/memoring-cli/SKILL.md +1 -1
package/dist/commands/deck.js
CHANGED
|
@@ -35,32 +35,13 @@ const GOAL_DISPLAY_MAX = 30;
|
|
|
35
35
|
function formatRelevance(relevance) {
|
|
36
36
|
return relevance === null ? '—' : relevance.toFixed(1).replace('.', ',');
|
|
37
37
|
}
|
|
38
|
-
/**
|
|
39
|
-
function goalCountdown(goalDate) {
|
|
40
|
-
if (!goalDate) {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
const target = Date.parse(`${goalDate}T00:00:00Z`);
|
|
44
|
-
if (Number.isNaN(target)) {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
const now = new Date();
|
|
48
|
-
const today = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate());
|
|
49
|
-
return `${Math.round((target - today) / 86_400_000)}d`;
|
|
50
|
-
}
|
|
51
|
-
/** META da listagem/update: goal + countdown da data-alvo, célula de ~30 chars. */
|
|
38
|
+
/** META da listagem/update: texto do goal, célula de ~30 chars. */
|
|
52
39
|
function formatGoal(deck) {
|
|
53
|
-
const suffix = (() => {
|
|
54
|
-
const countdown = goalCountdown(deck.goalDate);
|
|
55
|
-
return countdown === null ? '' : ` (${countdown})`;
|
|
56
|
-
})();
|
|
57
|
-
const budget = GOAL_DISPLAY_MAX - suffix.length;
|
|
58
40
|
let goal = (deck.goal ?? '').trim();
|
|
59
|
-
if (goal.length >
|
|
60
|
-
goal = `${goal.slice(0,
|
|
41
|
+
if (goal.length > GOAL_DISPLAY_MAX) {
|
|
42
|
+
goal = `${goal.slice(0, GOAL_DISPLAY_MAX - 1).trimEnd()}…`;
|
|
61
43
|
}
|
|
62
|
-
|
|
63
|
-
return label === '' ? '—' : label;
|
|
44
|
+
return goal === '' ? '—' : goal;
|
|
64
45
|
}
|
|
65
46
|
/** 45s | 12min | 1h05 — segundos inteiros; médias chegam já arredondadas. */
|
|
66
47
|
function formatRunSeconds(seconds) {
|
|
@@ -108,16 +89,6 @@ function parseGoalFlag(raw) {
|
|
|
108
89
|
}
|
|
109
90
|
return goal;
|
|
110
91
|
}
|
|
111
|
-
function parseGoalDateFlag(raw) {
|
|
112
|
-
if (!/^\d{4}-\d{2}-\d{2}$/.test(raw)) {
|
|
113
|
-
fail(`--goal-date inválido: use o formato AAAA-MM-DD (veio ${JSON.stringify(raw)}).`);
|
|
114
|
-
}
|
|
115
|
-
const time = Date.parse(`${raw}T00:00:00Z`);
|
|
116
|
-
if (Number.isNaN(time) || new Date(time).toISOString().slice(0, 10) !== raw) {
|
|
117
|
-
fail(`--goal-date inválido: ${raw} não é uma data real.`);
|
|
118
|
-
}
|
|
119
|
-
return raw;
|
|
120
|
-
}
|
|
121
92
|
function parseToneFlag(raw) {
|
|
122
93
|
const tone = raw.trim().toLowerCase();
|
|
123
94
|
if (!COVER_TONES.includes(tone)) {
|
|
@@ -128,7 +99,6 @@ function parseToneFlag(raw) {
|
|
|
128
99
|
const METADATA_SPECS = [
|
|
129
100
|
{ valueFlag: 'relevance', clearFlag: 'clear-relevance', field: 'relevance', parse: parseRelevanceFlag },
|
|
130
101
|
{ valueFlag: 'goal', clearFlag: 'clear-goal', field: 'goal', parse: parseGoalFlag },
|
|
131
|
-
{ valueFlag: 'goal-date', clearFlag: 'clear-goal-date', field: 'goalDate', parse: parseGoalDateFlag },
|
|
132
102
|
{ valueFlag: 'tone', clearFlag: 'clear-tone', field: 'coverTone', parse: parseToneFlag },
|
|
133
103
|
];
|
|
134
104
|
/**
|
|
@@ -152,7 +122,7 @@ function metadataBody(flags) {
|
|
|
152
122
|
}
|
|
153
123
|
}
|
|
154
124
|
if (Object.keys(body).length === 0) {
|
|
155
|
-
fail('nada a atualizar — informe ao menos um campo: --relevance, --goal, --
|
|
125
|
+
fail('nada a atualizar — informe ao menos um campo: --relevance, --goal, --tone ou um --clear-*.');
|
|
156
126
|
}
|
|
157
127
|
return body;
|
|
158
128
|
}
|
|
@@ -271,9 +241,9 @@ export async function deckCommand(parsed) {
|
|
|
271
241
|
' create <nome> cria um baralho (idempotente: nome existente só retorna o atual)\n' +
|
|
272
242
|
' --parent <id|nome> cria como sub-baralho\n' +
|
|
273
243
|
' update <id|nome> define metadados do baralho\n' +
|
|
274
|
-
' --relevance 0-5 (1 casa) | --goal "txt" (<=160)
|
|
275
|
-
' --tone gray|orange|green|blue|purple
|
|
276
|
-
' --clear-goal
|
|
244
|
+
' --relevance 0-5 (1 casa) | --goal "txt" (<=160)\n' +
|
|
245
|
+
' --tone gray|orange|green|blue|purple\n' +
|
|
246
|
+
' --clear-relevance --clear-goal --clear-tone (limpa o campo) | --json\n');
|
|
277
247
|
if (sub) {
|
|
278
248
|
process.exitCode = 1;
|
|
279
249
|
}
|
package/dist/main.js
CHANGED
|
@@ -9,7 +9,7 @@ import { updateCommand } from './commands/update.js';
|
|
|
9
9
|
import { skillCommand } from './commands/skill.js';
|
|
10
10
|
import { parseArgs as parse } from './commands/shared.js';
|
|
11
11
|
import { newerVersionAvailable, scheduleUpdateCheck } from './update.js';
|
|
12
|
-
const VERSION = '0.
|
|
12
|
+
const VERSION = '0.11.0';
|
|
13
13
|
const HELP = `Memoring CLI — flashcards e notas por IA, direto do terminal.
|
|
14
14
|
|
|
15
15
|
Uso: memoring <comando> [subcomando] [flags]
|
|
@@ -30,7 +30,7 @@ Comandos:
|
|
|
30
30
|
inclui --deck <id|nome>)
|
|
31
31
|
deck list seus baralhos (id, nome, pai, a revisar, relevância, meta, recorde)
|
|
32
32
|
deck create <nome> cria um baralho (--parent <id|nome> p/ sub-baralho)
|
|
33
|
-
deck update <id|nome> metadados do baralho (--relevance/--goal/--
|
|
33
|
+
deck update <id|nome> metadados do baralho (--relevance/--goal/--tone;
|
|
34
34
|
--clear-* limpa um campo)
|
|
35
35
|
update atualiza a CLI para a versão mais recente (via npm)
|
|
36
36
|
skill guia completo da CLI para agentes de IA (imprime o SKILL.md)
|
package/package.json
CHANGED
|
@@ -23,7 +23,7 @@ O Memoring é um app de estudos com revisão espaçada (FSRS). A CLI `memoring`
|
|
|
23
23
|
| `memoring stage create --file f [--replace] [--max-* N] [--deck nome]` | envia o lote (1 a 50 itens) para a caixa de revisão — **baralho OBRIGATÓRIO** (deckName por item ou `--deck` no lote; nomes novos viram baralhos); `--json` devolve `created` + `ids` |
|
|
24
24
|
| `memoring deck list` | seus baralhos (id, nome, pai, a revisar, relevância, meta, recorde) — consulte ANTES de gerar |
|
|
25
25
|
| `memoring deck create <nome> [--parent id]` | cria baralho (idempotente) |
|
|
26
|
-
| `memoring deck update <id\|nome> [--relevance <0-5>] [--goal "<txt>"] [--
|
|
26
|
+
| `memoring deck update <id\|nome> [--relevance <0-5>] [--goal "<txt>"] [--tone <gray\|orange\|green\|blue\|purple>] [--clear-*]` | define metadados do baralho (relevância, meta, tom de capa; `--clear-*` limpa o campo) |
|
|
27
27
|
| `memoring inbox list` | itens pendentes de revisão |
|
|
28
28
|
| `memoring inbox accept <id>\|accept-all` | aceita itens (entram nas listagens e na fila FSRS) |
|
|
29
29
|
| `memoring inbox discard <id>\|discard-all` | descarta item(ns) pendente(s) |
|