diff options
Diffstat (limited to 'course/chapters/06-files-cloud.json')
| -rw-r--r-- | course/chapters/06-files-cloud.json | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/course/chapters/06-files-cloud.json b/course/chapters/06-files-cloud.json new file mode 100644 index 0000000..697a5f5 --- /dev/null +++ b/course/chapters/06-files-cloud.json @@ -0,0 +1,132 @@ +{ + "id": "06-files-cloud", + "title": "Files, editor, WebDAV", + "icon": "☁", + "level": "intermediate", + "lessons": [ + { + "id": "6.1", + "title": "Edit and compare files", + "objective": "Use the editor and diff tools on the VFS.", + "minutes": 9, + "commands": [ + "edit", + "diff", + "find", + "files" + ], + "blocks": [ + { + "type": "text", + "text": "`edit` opens the VFS editor. `diff` compares two files. `find` searches names; `filemgr` opens the visual browser." + }, + { + "type": "cmd", + "text": "edit hello.txt" + }, + { + "type": "cmd", + "text": "find hello" + }, + { + "type": "cmd", + "text": "diff hello.txt hello.txt" + }, + { + "type": "tip", + "text": "The editor calls the tutorial/file-saved hook, so exercise progress can be detected from a save." + }, + { + "type": "cmd", + "text": "files" + } + ], + "exercise": { + "instruction": "Search for your file by name.", + "accept": [ + "find hello", + "find hello.txt" + ], + "check": { + "type": "command" + }, + "hint": "Type: find hello" + }, + "quiz": { + "q": "Which command opens the visual file manager?", + "options": [ + "filemgr", + "ls", + "cat" + ], + "answer": 0 + }, + "sources": [ + "modules/ext/editor.js", + "modules/ext/diff.js", + "modules/ext/filemgr.js" + ] + }, + { + "id": "6.2", + "title": "Cloud sync and login", + "objective": "Understand WebDAV auth, the space token, and the 401 self-heal path.", + "minutes": 14, + "commands": [ + "webdav-login", + "webdav-config", + "webdav-status", + "webdav-push", + "webdav-backup" + ], + "blocks": [ + { + "type": "text", + "text": "WebDAV syncs your VFS to your space. The module holds a SPACE token, not your personal token; it refreshes on 401." + }, + { + "type": "cmd", + "text": "webdav-status" + }, + { + "type": "cmd", + "text": "webdav-login" + }, + { + "type": "warn", + "text": "Sessions do not cross browser contexts. If a push 401s, run `webdav-login` in THIS browser, then retry." + }, + { + "type": "cmd", + "text": "webdav-push" + }, + { + "type": "cmd", + "text": "webdav-backup" + } + ], + "exercise": { + "instruction": "Check the WebDAV status.", + "accept": [ + "webdav-status" + ], + "check": { + "type": "command" + }, + "hint": "Type: webdav-status" + }, + "quiz": { + "q": "A 401 push usually means…", + "options": [ + "the file is too big", + "no session/token in this browser context", + "WebDAV is disabled" + ], + "answer": 1 + }, + "sources": [ + "modules/ext/webdav.js" + ] + } + ] +}
\ No newline at end of file |