aboutsummaryrefslogtreecommitdiff
path: root/course/chapters
diff options
context:
space:
mode:
authorAgando <roduccomm@gmail.com>2026-10-18 15:00:25 +0200
committerAgando <roduccomm@gmail.com>2026-10-18 15:00:25 +0200
commitbc199e350ea4ab000df03c9e732bf3478c9c43b6 (patch)
treedd75d59ec1acfeac2eae40de8f860ffcb34220f5 /course/chapters
parent3966a870b13ab0896e6cfa7fb3bca2003846b7e5 (diff)
course: fix P0 content errors + completion/mobile/keyboard UX (review A)
Diffstat (limited to 'course/chapters')
-rw-r--r--course/chapters/02-architecture.json32
-rw-r--r--course/chapters/03-commands.json28
-rw-r--r--course/chapters/05-modules.json12
-rw-r--r--course/chapters/06-files-cloud.json4
-rw-r--r--course/chapters/07-automation.json9
-rw-r--r--course/chapters/08-build.json8
6 files changed, 52 insertions, 41 deletions
diff --git a/course/chapters/02-architecture.json b/course/chapters/02-architecture.json
index 7dee513..8e8826b 100644
--- a/course/chapters/02-architecture.json
+++ b/course/chapters/02-architecture.json
@@ -7,12 +7,12 @@
{
"id": "2.1",
"title": "Terminal, modules, commands",
- "objective": "See how the terminal, module manager and command registry fit together.",
+ "objective": "See what is loaded, why a command can be listed but broken, and what the system is doing.",
"minutes": 9,
"commands": [
"modules",
- "status",
- "help"
+ "doctor",
+ "status"
],
"blocks": [
{
@@ -37,23 +37,24 @@
},
{
"type": "cmd",
- "text": "check"
+ "text": "doctor"
},
{
"type": "tip",
- "text": "A command that exists in `help` but fails at runtime usually has an unmet module requirement that `check` reports."
+ "text": "A command that exists in `help` but fails at runtime usually has an unmet module requirement that `doctor` reports."
}
],
"exercise": {
- "instruction": "List the loaded modules.",
+ "instruction": "Run `doctor` and see how it ranks module problems.",
"accept": [
+ "doctor",
"modules",
- "status"
+ "module-info *"
],
"check": {
"type": "command"
},
- "hint": "Type: modules"
+ "hint": "Type: doctor"
},
"quiz": {
"q": "Who executes a command after you press Enter?",
@@ -76,9 +77,11 @@
"objective": "Understand where files live and why a module edit sometimes needs a rebuild and sometimes does not.",
"minutes": 10,
"commands": [
- "status",
- "help",
- "load-local"
+ "pwd",
+ "cd",
+ "tree",
+ "health-check",
+ "mem"
],
"blocks": [
{
@@ -103,14 +106,15 @@
}
],
"exercise": {
- "instruction": "Run `status` and find the VFS size line.",
+ "instruction": "Run `health-check` and find the VFS size line.",
"accept": [
- "status"
+ "health-check",
+ "mem"
],
"check": {
"type": "command"
},
- "hint": "Type: status"
+ "hint": "Type: health-check"
},
"quiz": {
"q": "Which tier needs `rebuild-bundles.py` after an edit?",
diff --git a/course/chapters/03-commands.json b/course/chapters/03-commands.json
index 10807cb..40fa2ad 100644
--- a/course/chapters/03-commands.json
+++ b/course/chapters/03-commands.json
@@ -7,16 +7,17 @@
{
"id": "3.1",
"title": "Find any command fast",
- "objective": "Use help, commands and check to discover what exists before guessing.",
+ "objective": "Use help, doctor and status to discover what exists before guessing.",
"minutes": 7,
"commands": [
"help",
+ "doctor",
"status"
],
"blocks": [
{
"type": "text",
- "text": "`help` groups all 344 commands by the module that owns them."
+ "text": "`help` groups every registered command by the module that owns them."
},
{
"type": "cmd",
@@ -28,18 +29,20 @@
},
{
"type": "tip",
- "text": "`check` shows module requirements — the fastest way to explain a command that is listed but not working."
+ "text": "`doctor` shows module requirements — the fastest way to explain a command that is listed but not working."
}
],
"exercise": {
- "instruction": "Open the help for `webdav-push`.",
+ "instruction": "Run `doctor` and read its severity ranking.",
"accept": [
- "help webdav-push"
+ "doctor",
+ "help",
+ "status"
],
"check": {
"type": "command"
},
- "hint": "Type: help webdav-push"
+ "hint": "Type: doctor"
},
"quiz": {
"q": "Which command shows usage for one command?",
@@ -74,11 +77,11 @@
},
{
"type": "cmd",
- "text": "ls | grep txt"
+ "text": "grep hello hello.txt"
},
{
"type": "warn",
- "text": "`sed s/x/y/` substitutes the first match per LINE, not per file. `sed -i` is flagged destructive and needs confirmation."
+ "text": "`sed s/x/y/` substitutes the first match per LINE, not per file. `sed -i` overwrites the file immediately — checkpoint first (`checkpoint before-sed`). Pipes are partial in this build: `ls | grep x` may print the unfiltered listing; use `grep pattern file`."
},
{
"type": "text",
@@ -90,15 +93,16 @@
}
],
"exercise": {
- "instruction": "Search the current listing for `txt`.",
+ "instruction": "Search a file for a word (create `hello.txt` with `edit` if needed).",
"accept": [
- "ls | grep txt",
- "grep txt"
+ "grep hello hello.txt",
+ "grep * hello.txt",
+ "grep hello *"
],
"check": {
"type": "command"
},
- "hint": "Type: ls | grep txt"
+ "hint": "Type: grep hello hello.txt"
},
"quiz": {
"q": "`sed s/a/b/` replaces…",
diff --git a/course/chapters/05-modules.json b/course/chapters/05-modules.json
index 4b68f42..7829553 100644
--- a/course/chapters/05-modules.json
+++ b/course/chapters/05-modules.json
@@ -17,7 +17,7 @@
"blocks": [
{
"type": "text",
- "text": "`wpm` is the package manager for terminal modules: list the index, install a module from `packages.json` or a URL."
+ "text": "`wpm` is the package manager for terminal modules: list the index, install a package by name, inspect it with `wpm info`."
},
{
"type": "cmd",
@@ -29,22 +29,22 @@
},
{
"type": "text",
- "text": "Every ext module in the default build auto-loads. There is no separate “needs loadmod” tier."
+ "text": "Most ext modules auto-load via `module-loader.js`. Manual modules such as `test-suite` need `load-local`."
},
{
"type": "cmd",
- "text": "load-local modules/ext/calc.js"
+ "text": "load-local modules/test/test-suite.js"
}
],
"exercise": {
- "instruction": "List available packages.",
+ "instruction": "Inspect the calc package metadata.",
"accept": [
- "wpm list"
+ "wpm info calc"
],
"check": {
"type": "command"
},
- "hint": "Type: wpm list"
+ "hint": "Type: wpm info calc"
},
"quiz": {
"q": "What does wpm install?",
diff --git a/course/chapters/06-files-cloud.json b/course/chapters/06-files-cloud.json
index 697a5f5..e997b9c 100644
--- a/course/chapters/06-files-cloud.json
+++ b/course/chapters/06-files-cloud.json
@@ -18,7 +18,7 @@
"blocks": [
{
"type": "text",
- "text": "`edit` opens the VFS editor. `diff` compares two files. `find` searches names; `filemgr` opens the visual browser."
+ "text": "`edit` opens the VFS editor. `diff` compares two files. `find` searches names; `files` opens the visual browser."
},
{
"type": "cmd",
@@ -55,7 +55,7 @@
"quiz": {
"q": "Which command opens the visual file manager?",
"options": [
- "filemgr",
+ "files",
"ls",
"cat"
],
diff --git a/course/chapters/07-automation.json b/course/chapters/07-automation.json
index 3345fc2..b7eadb4 100644
--- a/course/chapters/07-automation.json
+++ b/course/chapters/07-automation.json
@@ -102,19 +102,20 @@
},
{
"type": "warn",
- "text": "`rollback` replaces current VFS state — checkpoint before experiments."
+ "text": "`rollback` replaces current VFS state — checkpoint before experiments. Only the 3 most recent checkpoints are kept; `checkpoint-list` shows what survived."
}
],
"exercise": {
- "instruction": "Create a checkpoint.",
+ "instruction": "Create a checkpoint, then confirm it is listed with `checkpoint-list`.",
"accept": [
"checkpoint *",
- "checkpoint"
+ "checkpoint",
+ "checkpoint-list"
],
"check": {
"type": "command"
},
- "hint": "Type: checkpoint my-test"
+ "hint": "Type: checkpoint my-test, then checkpoint-list"
},
"quiz": {
"q": "What does checkpoint do?",
diff --git a/course/chapters/08-build.json b/course/chapters/08-build.json
index 48a60bd..c09d89d 100644
--- a/course/chapters/08-build.json
+++ b/course/chapters/08-build.json
@@ -33,14 +33,16 @@
}
],
"exercise": {
- "instruction": "Run the built-in test suite.",
+ "instruction": "Load the test suite, then run it: `load-local modules/test/test-suite.js` then `test auto`.",
"accept": [
- "status"
+ "test auto",
+ "test *",
+ "load-local *test-suite*"
],
"check": {
"type": "command"
},
- "hint": "Type: test auto"
+ "hint": "Type: load-local modules/test/test-suite.js, then test auto"
},
"quiz": {
"q": "Which two places carry the version?",