Skip to content

Commit 398cdd9

Browse files
authored
Merge pull request #11 from xrobot-org/codex/onboarding-theme-toggle-clean
Add XRobot-Onboarding theme toggle and system theme sync
2 parents ea936c8 + fa65a88 commit 398cdd9

38 files changed

Lines changed: 4332 additions & 0 deletions
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
{
2+
"title": "XRobot Onboarding Guide",
3+
"subtitle": "算控一体 · 软硬兼修 · 多端同构",
4+
"storageKey": "xrobot_skill_tree_v1",
5+
"root": "start",
6+
"includes": [
7+
"config.mcu_newbie.json",
8+
"config.linux_newbie.json",
9+
"config.os_api.json",
10+
"config.libxr_core.json"
11+
],
12+
"nodes": {
13+
"start": {
14+
"type": "choice",
15+
"title": "选择你的起点",
16+
"subtitle": "我们会根据你的经验水平和目标平台安排不同的学习路径。",
17+
"question": "请选择最符合你的组合:",
18+
"options": [
19+
{
20+
"id": "mcu_newbie",
21+
"label": "MCU · 新手",
22+
"desc": "没有 LibXR 经验,从零开始配置环境并在 MCU 上跑通第一个固件。",
23+
"next": "mcu_newbie_env",
24+
"profile": {
25+
"exp": "newbie",
26+
"platform": "mcu"
27+
}
28+
},
29+
{
30+
"id": "linux_newbie",
31+
"label": "Linux · 新手",
32+
"desc": "没有 LibXR 经验,从零在 Linux 上搭建环境并跑通第一个 LibXR 程序。",
33+
"next": "linux_newbie_env",
34+
"profile": {
35+
"exp": "newbie",
36+
"platform": "linux"
37+
}
38+
},
39+
{
40+
"id": "os_api",
41+
"label": "系统层 · 操作系统 API",
42+
"desc": "已经有自己的工程环境,只想学习 LibXR 提供的统一线程 / 同步原语 / 定时器 / 异步任务接口。",
43+
"next": "os_api_basics",
44+
"profile": {
45+
"exp": "any",
46+
"platform": "any"
47+
}
48+
},
49+
{
50+
"id": "libxr_core",
51+
"label": "LibXR · 核心组件",
52+
"desc": "已经具备基本 OS / 线程概念,只想集中了解 LibXR 的基础数据类型、错误处理、时间与通用 I/O 等核心模块。",
53+
"next": "libxr_core_intro",
54+
"profile": {
55+
"exp": "any",
56+
"platform": "any"
57+
}
58+
}
59+
]
60+
}
61+
}
62+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"nodes": {
3+
"libxr_core_intro": {
4+
"type": "task",
5+
"title": "LibXR · 核心组件总览",
6+
"subtitle": "了解 LibXR 框架的核心模块,为后续所有系统层代码打基础。",
7+
"tags": [
8+
"LibXR",
9+
"核心组件",
10+
"基础库"
11+
],
12+
"tasks": [
13+
{
14+
"id": "libxr_core_read_core_doc",
15+
"title": "阅读“核心组件”章节并建立整体模块图",
16+
"descMd": "md/libxr_core/libxr_core_read_core_doc.md",
17+
"link": "https://xrobot-org.github.io/docs/basic_coding/core",
18+
"estimateMinutes": 10
19+
},
20+
{
21+
"id": "libxr_core_def_examples",
22+
"title": "阅读 core-def 文档并走一遍示例函数",
23+
"descMd": "md/libxr_core/core_def.md",
24+
"link": "https://xrobot-org.github.io/docs/basic_coding/core/core-def",
25+
"estimateMinutes": 20
26+
}
27+
]
28+
}
29+
}
30+
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
{
2+
"nodes": {
3+
"linux_newbie_env": {
4+
"type": "task",
5+
"title": "Linux · 新手 · 环境与分层",
6+
"subtitle": "从 Linux 视角理解 LibXR 在整个体系中的位置,搞清楚这一条路线在做什么。",
7+
"tags": [
8+
"Linux",
9+
"新手",
10+
"LibXR"
11+
],
12+
"tasks": [
13+
{
14+
"id": "linux_newbie_env_read_overview",
15+
"title": "【重要】LibXR 在 Linux 平台上的分层与职责",
16+
"link": "https://xrobot-org.github.io/docs/env_setup/env-setup-linux",
17+
"estimateMinutes": 15,
18+
"descMd": "md/linux_newbie_env/linux_newbie_env_read_overview.md"
19+
},
20+
{
21+
"id": "linux_newbie_env_setup",
22+
"title": "Linux 环境配置:编译器 / VS Code / Git",
23+
"link": "https://xrobot-org.github.io/docs/env_setup/env-setup-linux",
24+
"estimateMinutes": 20,
25+
"descMd": "md/linux_newbie_env/linux_newbie_env_setup.md"
26+
},
27+
{
28+
"id": "linux_newbie_basics_hello_cmake",
29+
"title": "第一个 LibXR CMake 工程:Hello LibXR(Linux)",
30+
"link": "https://xrobot-org.github.io/docs/env_setup/env-setup-linux",
31+
"estimateMinutes": 20,
32+
"descMd": "md/linux_newbie_env/linux_newbie_basics_hello_cmake.md"
33+
},
34+
{
35+
"id": "linux_newbie_basics_debug",
36+
"title": "在 VS Code 中调试第一个 LibXR 程序",
37+
"link": "https://xrobot-org.github.io/docs/env_setup/env-setup-linux",
38+
"estimateMinutes": 15,
39+
"descMd": "md/linux_newbie_env/linux_newbie_basics_debug.md"
40+
},
41+
{
42+
"id": "linux_newbie_env_review",
43+
"title": "小结:从环境到第一个可调试的 LibXR 工程",
44+
"link": "https://xrobot-org.github.io/docs/env_setup/env-setup-linux",
45+
"estimateMinutes": 10,
46+
"descMd": "md/linux_newbie_env/linux_newbie_env_review.md"
47+
}
48+
],
49+
"next": "linux_newbie_basics"
50+
},
51+
"linux_newbie_basics": {
52+
"type": "task",
53+
"title": "Linux · 新手 · LibXR 基础循环与终端体验",
54+
"subtitle": "在现有 CMake 工程上,用一个布尔量当作“LED”练习循环,再跑起来 LibXR 终端。",
55+
"tags": [
56+
"Linux",
57+
"新手",
58+
"LibXR",
59+
"Terminal",
60+
"RamFS"
61+
],
62+
"tasks": [
63+
{
64+
"id": "linux_newbie_basics_fake_led",
65+
"title": "用一个布尔量当作“LED”:LibXR 上的第一个循环",
66+
"link": "https://xrobot-org.github.io/docs/basic_coding/system/thread",
67+
"estimateMinutes": 15,
68+
"descMd": "md/linux_newbie_basics/linux_newbie_basics_fake_led.md"
69+
},
70+
{
71+
"id": "linux_newbie_basics_terminal_ramfs",
72+
"title": "在 Linux 上启用 LibXR 终端(RamFS 命令行)",
73+
"link": "https://xrobot-org.github.io/docs/basic_coding/middleware/terminal",
74+
"estimateMinutes": 20,
75+
"descMd": "md/linux_newbie_basics/linux_newbie_basics_terminal_ramfs.md"
76+
},
77+
{
78+
"id": "linux_newbie_basics_review",
79+
"title": "小结:从简单循环到终端的一条线",
80+
"link": "https://xrobot-org.github.io/docs/basic_coding/middleware",
81+
"estimateMinutes": 10,
82+
"descMd": "md/linux_newbie_basics/linux_newbie_basics_review.md"
83+
}
84+
],
85+
"next": "os_api_basics"
86+
}
87+
}
88+
}
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
{
2+
"nodes": {
3+
"mcu_newbie_env": {
4+
"type": "task",
5+
"title": "MCU · 新手 · 环境准备",
6+
"subtitle": "从零搭建 MCU 开发环境,确保能够编译并连接到开发板。",
7+
"tags": [
8+
"MCU",
9+
"新手",
10+
"环境"
11+
],
12+
"tasks": [
13+
{
14+
"id": "mcu_newbie_env_read_overview",
15+
"title": "【重要】LibXR / CodeGenerator / XRobot 的分层与职责",
16+
"link": "https://xrobot-org.github.io/docs/intro",
17+
"estimateMinutes": 15,
18+
"descMd": "md/mcu_newbie_env/mcu_newbie_env_read_overview.md"
19+
},
20+
{
21+
"id": "mcu_newbie_env_python_setup",
22+
"title": "安装 Python 工具:libxr / xrobot(可配合视频)",
23+
"link": "https://xrobot-org.github.io/docs/env_setup",
24+
"estimateMinutes": 10,
25+
"descMd": "md/mcu_newbie_env/mcu_newbie_env_python_setup.md"
26+
},
27+
{
28+
"id": "mcu_newbie_env_board_debugger",
29+
"title": "准备并连接 STM32 开发板与调试器",
30+
"link": "https://xrobot-org.github.io/docs/debug",
31+
"estimateMinutes": 10,
32+
"descMd": "md/mcu_newbie_env/mcu_newbie_env_board_debugger.md"
33+
},
34+
{
35+
"id": "mcu_newbie_env_stm32_vscode_gcc",
36+
"title": "在 Windows 上配置 STM32 + VS Code 开发环境",
37+
"link": "https://xrobot-org.github.io/docs/env_setup/env-setup-stm32",
38+
"estimateMinutes": 20,
39+
"descMd": "md/mcu_newbie_env/mcu_newbie_env_stm32_vscode_gcc.md"
40+
},
41+
{
42+
"id": "mcu_newbie_code_gen_stm32",
43+
"title": "使用 xr_cubemx_cfg 生成 STM32 初始化代码",
44+
"link": "https://xrobot-org.github.io/docs/code_gen/stm32",
45+
"estimateMinutes": 15,
46+
"descMd": "md/mcu_newbie_env/mcu_newbie_code_gen_stm32.md"
47+
}
48+
],
49+
"next": "mcu_newbie_basics"
50+
},
51+
"mcu_newbie_basics": {
52+
"type": "task",
53+
"title": "MCU · 新手 · 第一个 LibXR 工程(点灯 + 串口)",
54+
"subtitle": "从自动生成工程,到真正点亮板子、打出第一行串口日志",
55+
"tags": [
56+
"MCU",
57+
"新手",
58+
"LibXR",
59+
"STM32"
60+
],
61+
"tasks": [
62+
{
63+
"id": "mcu_newbie_basics_read_app_main",
64+
"title": "认识生成后的 LibXR 工程并接入 app_main()",
65+
"link": "https://xrobot-org.github.io/docs/code_gen/stm32",
66+
"estimateMinutes": 15,
67+
"descMd": "md/mcu_newbie_basics/mcu_newbie_basics_read_app_main.md"
68+
},
69+
{
70+
"id": "mcu_newbie_basics_blink_led",
71+
"title": "在 app_main() 中用 LibXR GPIO 实现第一个 LED 闪烁",
72+
"link": "https://xrobot-org.github.io/docs/code_gen/stm32/stm32-code-gen-gpio",
73+
"estimateMinutes": 20,
74+
"descMd": "md/mcu_newbie_basics/mcu_newbie_basics_blink_led.md"
75+
},
76+
{
77+
"id": "mcu_newbie_basics_button_exti_pwm",
78+
"title": "按键输入 → 外部中断 → PWM:在同一工程上逐步扩展",
79+
"link": "https://xrobot-org.github.io/docs/code_gen/stm32/stm32-code-gen-gpio",
80+
"estimateMinutes": 30,
81+
"descMd": "md/mcu_newbie_basics/mcu_newbie_basics_button_exti_pwm.md"
82+
},
83+
{
84+
"id": "mcu_newbie_basics_uart_hw",
85+
"title": "硬件串口:用 LibXR 发送简单文本(初识 I/O 操作模型)",
86+
"link": "https://xrobot-org.github.io/docs/code_gen/stm32/stm32-code-gen-uart",
87+
"estimateMinutes": 30,
88+
"descMd": "md/mcu_newbie_basics/mcu_newbie_basics_uart_hw.md"
89+
},
90+
{
91+
"id": "mcu_newbie_basics_review",
92+
"title": "小结:从 CubeMX 到 app_main 的完整链路和学习方法",
93+
"link": "https://xrobot-org.github.io/docs/code_gen/stm32",
94+
"estimateMinutes": 10,
95+
"descMd": "md/mcu_newbie_basics/mcu_newbie_basics_review.md"
96+
}
97+
],
98+
"next": "mcu_newbie_periph"
99+
},
100+
"mcu_newbie_periph": {
101+
"type": "task",
102+
"title": "MCU · 新手 · 外设与基础中间件(USB 串口 / 命令行 / 数据库)",
103+
"subtitle": "在已有 LibXR 工程上,扩展更多 I/O 能力和参数管理手段",
104+
"tags": [
105+
"MCU",
106+
"新手",
107+
"LibXR",
108+
"STM32",
109+
"USB",
110+
"终端",
111+
"数据库"
112+
],
113+
"tasks": [
114+
{
115+
"id": "mcu_newbie_periph_overview",
116+
"title": "其他外设与基础中间件:能力与文档入口",
117+
"link": "https://xrobot-org.github.io/docs/code_gen/stm32",
118+
"estimateMinutes": 60,
119+
"descMd": "md/mcu_newbie_periph/mcu_newbie_periph_overview.md"
120+
},
121+
{
122+
"id": "mcu_newbie_periph_usb_terminal",
123+
"title": "USB 串口与终端:通过配置启用 Terminal + RamFS 命令行",
124+
"link": "https://xrobot-org.github.io/docs/code_gen/stm32/stm32-code-gen-uart",
125+
"estimateMinutes": 25,
126+
"descMd": "md/mcu_newbie_periph/mcu_newbie_periph_usb_terminal.md"
127+
},
128+
{
129+
"id": "mcu_newbie_periph_flash_db",
130+
"title": "使用 Flash 数据库存储简单配置参数",
131+
"link": "https://xrobot-org.github.io/docs/code_gen/stm32/stm32-code-gen-flash",
132+
"estimateMinutes": 25,
133+
"descMd": "md/mcu_newbie_periph/mcu_newbie_periph_flash_db.md"
134+
},
135+
{
136+
"id": "mcu_newbie_periph_review",
137+
"title": "小结:外设封装 / USB 串口 / 终端 / Flash 数据库 的整体图",
138+
"link": "https://xrobot-org.github.io/docs/basic_coding/middleware",
139+
"estimateMinutes": 10,
140+
"descMd": "md/mcu_newbie_periph/mcu_newbie_periph_review.md"
141+
}
142+
],
143+
"next": "os_api_basics"
144+
}
145+
}
146+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
{
2+
"nodes": {
3+
"os_api_basics": {
4+
"type": "task",
5+
"title": "LibXR · 系统层 · 操作系统 API 入门",
6+
"subtitle": "统一线程 / 同步原语 / 定时器与异步任务,在裸机、RTOS 和 Linux 上保持同一套用法。",
7+
"tags": [
8+
"LibXR",
9+
"系统层",
10+
"操作系统",
11+
"线程",
12+
"同步"
13+
],
14+
"tasks": [
15+
{
16+
"id": "os_api_intro",
17+
"title": "运行环境入门:裸机 / RTOS / Linux 是啥",
18+
"link": "https://xrobot-org.github.io/docs/basic_coding/system",
19+
"estimateMinutes": 10,
20+
"descMd": "md/os_api_basics/os_api_intro.md"
21+
},
22+
{
23+
"id": "os_thread_basic",
24+
"title": "线程入门:在 RTOS / Linux 跑出第一个 LibXR::Thread",
25+
"link": "https://xrobot-org.github.io/docs/basic_coding/system/thread",
26+
"estimateMinutes": 20,
27+
"descMd": "md/os_api_basics/os_thread_basic.md"
28+
},
29+
{
30+
"id": "os_mutex_basic",
31+
"title": "互斥锁入门:用 LibXR::Mutex 保护共享计数器",
32+
"link": "https://xrobot-org.github.io/docs/basic_coding/system/mutex",
33+
"estimateMinutes": 20,
34+
"descMd": "md/os_api_basics/os_mutex_basic.md"
35+
},
36+
{
37+
"id": "os_semaphore_basic",
38+
"title": "信号量 + 回调入门:用 LibXR::Semaphore 和 Callback 通知线程",
39+
"link": "https://xrobot-org.github.io/docs/basic_coding/system/semaphore",
40+
"estimateMinutes": 30,
41+
"descMd": "md/os_api_basics/os_semaphore_basic.md"
42+
},
43+
{
44+
"id": "os_timer_basic",
45+
"title": "定时器入门:用 LibXR::Timer 跑出周期任务",
46+
"link": "https://xrobot-org.github.io/docs/basic_coding/system/timer",
47+
"estimateMinutes": 20,
48+
"descMd": "md/os_api_basics/os_timer_basic.md"
49+
},
50+
{
51+
"id": "os_async_basic",
52+
"title": "异步任务入门:用 LibXR::ASync 把耗时操作丢到后台跑",
53+
"link": "https://xrobot-org.github.io/docs/basic_coding/system/async",
54+
"estimateMinutes": 20,
55+
"descMd": "md/os_api_basics/os_async_basic.md"
56+
}
57+
],
58+
"next": "libxr_core_intro"
59+
}
60+
}
61+
}

0 commit comments

Comments
 (0)