wendkeep 0.7.0 → 0.8.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/CHANGELOG.md +38 -0
- package/README.md +1 -1
- package/hooks/brain-core.mjs +2 -1
- package/hooks/change-core.mjs +34 -34
- package/hooks/harness-doctor.mjs +4 -3
- package/hooks/linked-notes.mjs +8 -6
- package/hooks/locale.mjs +73 -0
- package/hooks/obsidian-common.mjs +12 -9
- package/hooks/session-ensure.mjs +1 -1
- package/hooks/session-start.mjs +1 -1
- package/hooks/session-stop.mjs +5 -3
- package/hooks/spec-core.mjs +10 -7
- package/hooks/vault-health.mjs +3 -1
- package/package.json +2 -2
- package/src/change.mjs +6 -5
- package/src/init.mjs +36 -11
- package/src/skills-seed.mjs +146 -3
- package/src/spec.mjs +2 -1
- package/src/sync-defs.mjs +61 -2
- package/src/taxonomy.mjs +1 -0
- package/src/validate-core.mjs +34 -9
- package/src/vault-readme.mjs +86 -44
- package/src/vault-theme.mjs +40 -30
- package/src/verify.mjs +2 -1
package/src/vault-theme.mjs
CHANGED
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
|
|
9
9
|
export const SNIPPET_NAME = 'wendkeep-colors';
|
|
10
10
|
|
|
11
|
+
import { LOCALES } from '../hooks/locale.mjs';
|
|
12
|
+
const PT = LOCALES['pt-BR'];
|
|
13
|
+
|
|
11
14
|
// Base palette (hex + "r, g, b" for rgba()).
|
|
12
15
|
const PALETTE = {
|
|
13
16
|
blue: { hex: '#2f80ed', rgb: '47, 128, 237' },
|
|
@@ -20,42 +23,49 @@ const PALETTE = {
|
|
|
20
23
|
slate: { hex: '#64748b', rgb: '100, 116, 139' },
|
|
21
24
|
};
|
|
22
25
|
|
|
23
|
-
// File-explorer folder -> palette key
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
26
|
+
// File-explorer folder KEY -> palette key; folder names resolve via the vault locale.
|
|
27
|
+
const PALETTE_BY_KEY = {
|
|
28
|
+
inbox: 'amber',
|
|
29
|
+
project: 'indigo',
|
|
30
|
+
sessions: 'blue',
|
|
31
|
+
linear: 'teal',
|
|
32
|
+
decisions: 'violet',
|
|
33
|
+
bugs: 'red',
|
|
34
|
+
learnings: 'green',
|
|
35
|
+
specs: 'teal',
|
|
36
|
+
changes: 'amber',
|
|
37
|
+
};
|
|
38
|
+
function folderPalette(loc) {
|
|
39
|
+
return [...Object.entries(PALETTE_BY_KEY).map(([k, p]) => [loc.folders[k], p]), ['Templates', 'slate']];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Note cssclass -> palette + locale folder key; `folder` resolves per locale.
|
|
43
|
+
const NOTE_TYPES = {
|
|
44
|
+
session: { cssClass: 'topic-session', folderKey: 'sessions', palette: 'blue' },
|
|
45
|
+
decision: { cssClass: 'topic-decision', folderKey: 'decisions', palette: 'violet' },
|
|
46
|
+
bug: { cssClass: 'topic-bug', folderKey: 'bugs', palette: 'red' },
|
|
47
|
+
learning: { cssClass: 'topic-learning', folderKey: 'learnings', palette: 'green' },
|
|
48
|
+
spec: { cssClass: 'topic-spec', folderKey: 'specs', palette: 'teal' },
|
|
49
|
+
change: { cssClass: 'topic-change', folderKey: 'changes', palette: 'amber' },
|
|
45
50
|
};
|
|
51
|
+
// Legacy pt-shaped export (folder names resolved at pt-BR) kept for compat.
|
|
52
|
+
export const NOTE_COLORS = Object.fromEntries(
|
|
53
|
+
Object.entries(NOTE_TYPES).map(([k, v]) => [k, { cssClass: v.cssClass, folder: PT.folders[v.folderKey], palette: v.palette }]),
|
|
54
|
+
);
|
|
46
55
|
|
|
47
|
-
// cssclasses that get the note-accent treatment (the
|
|
48
|
-
const TOPIC_CLASSES = [...Object.values(
|
|
56
|
+
// cssclasses that get the note-accent treatment (the note types + a home note).
|
|
57
|
+
const TOPIC_CLASSES = [...Object.values(NOTE_TYPES).map((n) => n.cssClass), 'vault-home'];
|
|
49
58
|
const NOTE_ACCENTS = [
|
|
50
|
-
...Object.values(
|
|
59
|
+
...Object.values(NOTE_TYPES).map((n) => ({ cssClass: n.cssClass, palette: n.palette })),
|
|
51
60
|
{ cssClass: 'vault-home', palette: 'indigo' },
|
|
52
61
|
];
|
|
53
62
|
|
|
54
63
|
const FX = '.workspace-leaf-content[data-type="file-explorer"] .nav-folder-title';
|
|
55
|
-
const folderSel = FOLDER_PALETTE.map(([f]) => `[data-path^="${f}"]`).join(',\n ');
|
|
56
64
|
const topicReading = TOPIC_CLASSES.map((c) => `.${c}`).join(', ');
|
|
57
65
|
|
|
58
|
-
export function renderColorSnippetCss() {
|
|
66
|
+
export function renderColorSnippetCss(loc = PT) {
|
|
67
|
+
const FOLDER_PALETTE = folderPalette(loc);
|
|
68
|
+
const folderSel = FOLDER_PALETTE.map(([f]) => `[data-path^="${f}"]`).join(',\n ');
|
|
59
69
|
const rootVars = Object.entries(PALETTE)
|
|
60
70
|
.map(([k, v]) => ` --us-${k}: ${v.hex};\n --us-${k}-rgb: ${v.rgb};`)
|
|
61
71
|
.join('\n');
|
|
@@ -181,9 +191,9 @@ export function mergeAppearance(existing, snippetName = SNIPPET_NAME) {
|
|
|
181
191
|
}
|
|
182
192
|
|
|
183
193
|
// Graph color groups: one per note folder, colored from the palette.
|
|
184
|
-
export function graphColorGroups() {
|
|
185
|
-
return Object.values(
|
|
186
|
-
query: `path:"${v.
|
|
194
|
+
export function graphColorGroups(loc = PT) {
|
|
195
|
+
return Object.values(NOTE_TYPES).map((v) => ({
|
|
196
|
+
query: `path:"${loc.folders[v.folderKey]}"`,
|
|
187
197
|
color: { a: 1, rgb: parseInt(PALETTE[v.palette].hex.slice(1), 16) },
|
|
188
198
|
}));
|
|
189
199
|
}
|
package/src/verify.mjs
CHANGED
|
@@ -7,6 +7,7 @@ import { parseTasks, activeChange, appendFixTasks } from '../hooks/change-core.m
|
|
|
7
7
|
import { loadSensors, requiredSensors, runSensors, evaluateGate } from '../hooks/sensors-core.mjs';
|
|
8
8
|
import { tasksHashOf } from '../hooks/spec-core.mjs';
|
|
9
9
|
import { addLesson } from '../hooks/lessons-core.mjs';
|
|
10
|
+
import { getLocale } from '../hooks/locale.mjs';
|
|
10
11
|
|
|
11
12
|
function today() {
|
|
12
13
|
const d = new Date();
|
|
@@ -28,7 +29,7 @@ export function runVerify(argv) {
|
|
|
28
29
|
const slug = opt(argv, '--change') || activeChange(vaultBase);
|
|
29
30
|
if (!slug) { process.stderr.write('wendkeep verify: no change (--change or active).\n'); process.exit(2); }
|
|
30
31
|
|
|
31
|
-
const changeDir = join(vaultBase,
|
|
32
|
+
const changeDir = join(vaultBase, getLocale(vaultBase).folders.changes, slug);
|
|
32
33
|
let tarefas = '';
|
|
33
34
|
try { tarefas = readFileSync(join(changeDir, 'tarefas.md'), 'utf8'); }
|
|
34
35
|
catch { process.stderr.write(`wendkeep verify: change not found: ${slug}\n`); process.exit(2); }
|