Commit Graph

  • f242308a3b 部署:update.sh 改由 deploy/update-bg.sh 在服务器上后台跑(setsid),SSH 断了它照样跑完。2026-11-03 开发机上 FlClash 切换配置重建了 TUN 网卡,SSH 正好断在 docker compose up 中间:旧容器删了、新容器只创建没启动,网站停了 40 分钟。输出写到 /var/tmp/iot_sim-update.log,--follow <提交号> 接着看输出、退出码和 update.sh 一样,这个提交的部署还没开始时返回 75;上一次还在跑就等它结束。Gitea 的"起服务"ssh 返回 255 就 10 秒后重连 --follow,75 就重新开始,最多 6 次。GitHub 备用部署也改用 update-bg.sh。部署说明同步 main xuyueandClaude Opus 5.5 2026-11-03 13:32:21 +08:00
  • 2aa267839f 导出 VS 工程:实验页工具栏的"导出 EXE"改成下拉按钮"导出 ▾",里面是"导出 EXE"和"导出 VS 工程"。导出的 zip 是教材那样的 VS 2012 窗体应用工程(.sln + .csproj,.NET Framework 4.5),在机房电脑上解压、双击 .sln 用 VS 打开接着改,按 F5 运行。导出前照机房环境编译一遍要放进 zip 的代码:C# 5(VS 2012 的编译器)、真机版设备类库,有错不导出;新版 C# 写法报 CS8026,按功能名给出改法(字符串插值改 string.Format、?. 改先判断 null、=> 改大括号等 12 种)。导出 EXE 仍按最新 C#。平台的 Properties/Resources.Designer.cs 换成 VS 生成的写法和 Resources.resx,图片放 Resources\;代码里按文件名用的素材(ring.mp3)复制到输出目录,运行时在 bin\Debug\Resources\;每个窗体带 .resx(媒体播放器 OcxState 用教材默认状态),SubType、DependentUpon 和 VS 一样;补上 AssemblyInfo、Settings、App.config。教材 dll 全放 lib\,只引用代码直接用到的(和教材工程一样),只带这些编译不过时引用全部;用到书上的 ledHelper.Close() 时带上 LedHelperCompat.cs。文本文件用带 BOM 的 UTF-8 和 CRLF(VS 2012 打开不带 BOM 的文件会把中文当 GBK);zip 文件名用 GBK,另附 Info-ZIP Unicode 文件名字段(0x7075),中文 Windows 自带解压和 7-Zip 都显示正确(ZipWriter.cs)。23 个示例都能导出,导出的工程在 mono 的 msbuild 里全部编译通过、输出目录和教材 bin\Debug 一样、程序能启动;VS 2012 还要在机房实测。接口 POST /api/export-project,代码有错时 422。export-exe.ts 改名 export.ts(服务器和网页各一个)。使用说明、设计方案、README、部署说明同步 xuyueandClaude Opus 5.5 2026-11-03 12:42:13 +08:00
  • 4c3ce31fe1 部署:push origin 就由开发机编好、测过再传到服务器,服务器不再自己编,push 后一两分钟上线。照 OJ2 的做法,开发机上的 gitea-runner(和 OJ2 共用,标签 iot-deploy,一次只跑一个任务)跑 .gitea/workflows/deploy.yml:编 C# 运行时(Release)、网页和 server.js,跑服务端测试(用要上线的 Release 版运行时)、网页端测试和类型检查,产物 rsync 到服务器的 prebuilt/(按内容比、传完才换上、断了重试),服务器上 deploy/update.sh --prebuilt 用现成产物构建镜像,只剩几条 COPY。以前 GitHub 上测试约 5 分钟、服务器 2 核再编约一分钟(编的时候学生程序会卡),push 后 6 分钟多才上线。host 模式用开发机自己的 ssh 和 git 访问,不需要 secret。Dockerfile 加构建参数 ARTIFACTS(build 默认在镜像里编 / prebuilt 用现成产物),服务器自己编的能力保留;prebuilt/COMMIT 和要部署的提交对不上时 update.sh 直接失败。服务端测试同时跑:文件之间 --parallel,评分测试标 describe.concurrent(--max-concurrency=8),本机 4 分钟降到半分钟,连跑三遍都通过。GitHub 的 ci.yml 改成 PR 跑测试、手动触发才部署(服务器自己编),开发机不在时用,push 不再两边各部署一遍。顺手:update.sh 每次部署拉一下 caddy:2-alpine(up 不会自己拉,一直是第一次部署时那份);app 和 caddy 的容器日志限 10MB × 3。部署说明、README、设计方案同步 xuyueandClaude Opus 5.5 2026-11-03 12:08:14 +08:00
  • 77bfaba7ff 导出 EXE:服务器上的教材 dll 读不了(root 拷进去的文件是 600,容器里的平台用户读不到)时提示中文原因和改法,不再把英文的系统报错给学生看;部署说明补上 chmod 755 目录、644 文件 xuyueandClaude Opus 5.5 2026-11-02 22:19:28 +08:00
  • 5e5d29b2aa 导出 EXE:实验页工具栏"导出 EXE"把学生的程序编译成一个 exe,拷到机房电脑上双击就能控制真的实训台。编译服务照教材工程编译学生写的原始代码(.NET Framework 4.5 引用程序集,构建时只复制教材工程引用的 13 个到 netfx/;真机版设备类库),不做平台的仿真改写和 API 限制,和 VS 里一样。教材 dll(DeviceCtrlLibrary 及 API 下 7 个、WinFormsDeviceControlLibrary、媒体播放器的两个 Interop)作为资源嵌进 exe,模块初始化器注册 AssemblyResolve 从 exe 里加载,Program.cs 不用改;Properties.Resources 的图片、声音嵌进 exe,代码里按文件名用到的素材(项目 7 的 ring.mp3)启动时放到 exe 旁边的 Resources;媒体播放器的 OcxState 用教材 resx 的默认状态;书上的 ledHelper.Close() 在教材类库里没有,补一个空的扩展方法。23 个实验都能导出(约 0.9 MB),mono + Xvfb 里实测能启动、控件和图片正常。接口 POST /api/export-exe,代码有错时 422,实验页弹框列出报错、点击跳到代码。教材 dll 有版权、GitHub 仓库公开,不进仓库:本机放 textbook-libs/,服务器放 ~/IOT_SIM/textbook-libs/ 由 compose 只读挂载(deploy/README.md),没放时提示原因。使用说明、设计方案、README 同步 xuyueandClaude Opus 5.5 2026-11-02 22:10:07 +08:00
  • 46e0f40cce 实训台接线:串口要选对。接线做成数据(BoardState.wiring),默认按教材布局图 COM2 ADAM-4017+、COM3 ADAM-4150、COM4 ZigBee 协调器、COM5 LED 屏,实验可在 meta.json 的 wiring 里改:项目 7 的书上代码在一个串口上打开两个模块,这三个实验把 4150 并到 COM2 的 485 总线上。选错串口时返回值照反编译的真机版 dll(4017 全 null、4150 全 false,4150 的 OnOff 和 LED 推送返回成功但设备不动作,ZigBee 返回 false);串口没打开时照教材仿真版。Open / Close / 没打开就读写报告给服务器,实训台最上方用红字提示("程序在 COM2 上打开 ADAM-4150,它接在 COM3""ADAM-4150 的串口没有打开,程序却在读写它"),评分不通过时也附上。只读接线展示:鼠标移到实训台设备上,标题栏写出线路,对应通道、模块、串口高亮;串口服务器按接线列出设备,程序打开的口亮绿点;程序里串口下拉框的灰字按当前接线。打开实验时浏览器发 experiment 消息换接线,老师看学生提交时按作业的实验接线(提交接口返回 sampleId)。"4017"统一写成 ADAM-4017+ xuyueandClaude Opus 5.5 2026-10-28 17:40:57 +08:00
  • 163e553de4 日期选择框兼容机房 Chrome 94:以前点下拉按钮靠 showPicker() 弹出日期框,它 Chrome 99 才正式有,Chrome 94 的原型上有这个方法、调用却没反应,项目 6 任务 3、项目 8 任务 5 选不了日期。改成把浏览器的日期框透明地盖在下拉按钮上、日历图标撑满按钮,点按钮由浏览器自己弹出(Chromium 94 和新版 Chrome 实测都能选)。运行时长日期和中文 Windows 一致,不带星期(Linux 的 zh-CN 长日期是"2026年10月28日星期三",日期框窄,星期被截掉) xuyueandClaude Opus 5.5 2026-10-28 17:40:57 +08:00
  • 9ed446f95a 实验页:程序运行时改了代码或设计器,停手 1.5 秒后自动重新运行,不用再按 F5。重启前先用边写边检查的接口检查整个工程,有错误就不重启,原来的程序接着运行,工具栏提示"代码有错误,改好后自动重新运行";检查期间又改了、程序已停或换了工程时作废;停止后改动不会自动启动程序。使用说明、设计方案同步 xuyueandClaude Opus 5.5 2026-10-28 15:15:46 +08:00
  • 6a18bdf2e4 兼容机房的 Chrome 94:打包目标改成 Chrome / Edge 94;polyfills.ts 补 crypto.randomUUID(http 打开时没有)、structuredClone(只复制普通数据)、findLast / findLastIndex;vite.config.ts 加小插件,把代码块之间的 import("./X.js") 改成 /assets/ 开头的绝对路径(Chrome 94 有时相对网页地址解析,拿到首页 HTML 一片空白),改过的代码块换新文件名;容器查询改成 ResizeObserver 量宽度加 class(实训台三档布局、设计器窄时隐藏提示);:has() 改成 class(只读、禁用文本框灰底,没标题的分组框)。旧浏览器提示改成 94 以上,设计方案记录实测 xuyueandClaude Opus 5.5 2026-10-28 12:58:25 +08:00
  • ab933d1896 学生窗体的密码框不再被浏览器自动填上平台的用户名和密码:设了 PasswordChar / UseSystemPasswordChar 的文本框改成普通文本框加 -webkit-text-security 遮成圆点,浏览器不把它当登录表单(不支持该属性的浏览器才退回密码框并标 new-password);文本框、下拉框、表格单元格编辑框都加 autocomplete="off",不弹以前输入过的内容。所有任务共用这个控件,项目 1 任务 1 的登录、添加用户窗体都覆盖到 xuyueandClaude Opus 5.5 2026-10-28 12:57:28 +08:00
  • 50dced4d37 串口下拉框去掉电脑自带的 COM1,只留实训台上的 COM2–COM5;展开时每个串口后面用灰字标出接的设备(ADAM-4017+、ADAM-4150、ZigBee 协调器、LED 屏),选中后的值还是 COM2 这样的串口名,和真机一致。项目 5 任务 3 跳过 COM1 的写法照书保留,任务说明补一句;使用说明、设计方案同步;按位置选串口的测试下标跟着改 xuyueandClaude Opus 5.5 2026-10-27 20:41:18 +08:00
  • 50946467f6 窗体显示和 WinForms 对齐:文本框、下拉框、列表框、日期选择默认白底黑字,不沿用父控件的颜色(项目 8 白字分组框里的文本框填了字看不见);下拉框的背景色能显示、展开的列表跟着下拉框的颜色和字体;分组框、面板禁用时里面的控件也禁用(变灰、不响应操作,Enabled 读出 false 并触发 EnabledChanged);禁用的控件设了颜色也画灰字;窗体、文本框等设透明背景色和 WinForms 一样报错,设计器里也不提供"透明";多行文本框按 ScrollBars 显示滚动条;标签的边框和 TextAlign、窗体的 ControlBox、复选框的不确定状态能显示;设计器里 Enabled = false 的控件和 VS 一样照常显示 xuyueandClaude Opus 5.5 2026-10-27 16:41:46 +08:00
  • a2f03ee57f 实验页:编辑区和运行区之间的竖条上的小箭头换成竖排文字"收起运行区""展开运行区",竖条加宽到 22px xuyueandClaude Opus 5.5 2026-10-27 16:41:46 +08:00
  • e177753ad6 数据库页面:对象资源管理器加库和表的图标,表缩进挂在库下面(左边竖线),一眼分得清层级;标签页内容改成占标签栏下面剩下的高度,不再多出 39px 撑出整页滚动条;查询补全写了 FROM / JOIN 后只列用到的表的列。设计器画布窄时操作栏折行、不显示提示文字,不再撑出横向滚动条。使用说明的数据库截图同步 xuyueandClaude Opus 5.5 2026-10-27 16:06:13 +08:00
  • f9a2739353 数据库页面的对象资源管理器简化成“库 → 表”两层:去掉“数据库”“表”“列”三层文件夹和 emoji;头部“+ 新建库”和刷新,每个库下面“+ 新建表”;点表名打开编辑前 200 行(已经开着就切过去),库和表右边的 ⋯ 和右键是同一个菜单(新建表 / 新建查询 / 删除数据库;编辑数据 / 查询前 1000 行 / 设计表结构 / 删除表),⋯ 打开的菜单出在按钮下面;鼠标停在表名上显示列。顶部去掉重复的“新建数据库”按钮;使用说明、数据库截图和设计方案同步 xuyueandClaude Opus 5.5 2026-10-27 15:23:42 +08:00
  • b292d38ba7 查询窗口加自动补全:T-SQL 关键字、函数、数据类型(中文说明,只列服务器能执行的),当前数据库的表名和列名;FROM / JOIN 等后面敲空格弹出表名,"表名."或"别名."只列这张表的列,USE 后面列数据库;字符串和注释里不弹出 xuyueandClaude Opus 5.5 2026-10-27 15:01:57 +08:00
  • d6e891cdb0 使用说明:截图点击后在页面上放大(按窗口大小,最多放大 2 倍),点任意处或按 Esc 关闭 xuyueandClaude Opus 5.5 2026-10-27 14:53:54 +08:00
  • 53005e69e4 使用说明配截图:学生部分 9 张(我的作业、实验页、任务面板、设计器、运行出错、实训台、自己检查、评分结果、数据库),老师部分 4 张(名单、布置作业、评阅、成绩);WebP 共约 350 KB,按需加载,点击看原图 xuyueandClaude Opus 5.5 2026-10-27 12:01:38 +08:00
  • 313acf2453 使用说明同步最近的改动:报错和运行出错显示在窗体下面、放大后可以停止、双击工具箱的放置规则、两盏照明灯、数据库页面默认用刚才的实验;常见问题加"只显示已停止" xuyueandClaude Opus 5.5 2026-10-27 11:49:31 +08:00
  • b7e7f77fb0 实训台:加 ADAM-4150 DO1 照明灯的卡片(项目 7 用);滑块松开后等服务器回传同样的值再换回,键盘方向键连按不再丢步 xuyueandClaude Opus 5.5 2026-10-27 11:43:16 +08:00
  • b3d6e1f88f update xuyue 2026-10-27 11:39:26 +08:00
  • f6024dc113 试用前走查的修改:报错看得见、学生找得到作业、运行区和设计器的若干体验问题 xuyueandClaude Opus 5.5 2026-10-27 08:49:42 +08:00
  • da623fa648 任务名重新设计:用学生要做的程序命名,10 个字以内,去掉实现采集…数据和设备型号;项目 8 用模块:步骤写法;p6-t3 改为按日期查询环境数据,与内容一致 xuyueandClaude Opus 5.5 2026-10-26 23:32:19 +08:00
  • e4c53f5e55 名单改为用户名、密码两列;去掉姓名前的班级代号,学生用姓名登录;别班已有同名学生时报错,不再转班 xuyueandClaude Opus 5.5 2026-10-26 21:49:50 +08:00
  • 61a32e900d 实验下拉菜单按项目分组;路线图更新到已上线、待一个班试用 xuyueandClaude Opus 5.5 2026-10-26 21:39:40 +08:00
  • 4ce800c77f compose 传入 SIM_GRADE_CONCURRENCY,.env.example 补上说明 xuyueandClaude Opus 5.5 2026-10-26 21:13:30 +08:00
  • de277d3e9d 用 bun fmt 格式化全部代码和文档 xuyueandClaude Opus 5.5 2026-10-26 14:02:33 +08:00
  • d4b8bf9241 任务说明补齐 23 份;设计器支持窗体改名 xuyueandClaude Opus 5.5 2026-10-26 13:55:39 +08:00
  • 90b739a2c7 任务说明:实验页"任务"面板、布置作业时可改写;先写项目 3 任务 2、项目 6 任务 2 两份 xuyueandClaude Opus 5.5 2026-10-26 10:04:05 +08:00
  • 3b9f635c35 使用说明页:学生和老师的操作步骤、上课前后注意事项、常见问题 xuyueandClaude Opus 5.5 2026-10-26 09:46:00 +08:00
  • 27fdc3615d 试用前排查:WebSocket 心跳与断线重连、登录失败按账号限制、旧浏览器提示 xuyueandClaude Opus 5.5 2026-10-26 09:05:05 +08:00
  • 982b1297aa 试用前准备:全班模拟压测、评分并发 6→16、手动备份与恢复 xuyueandClaude Opus 5.5 2026-10-25 20:08:31 +08:00
  • e8058376dd 评阅页不显示项目资源类;编译、往返时间只给老师看 xuyueandClaude Opus 5.5 2026-10-25 18:56:07 +08:00
  • c217eb5ca0 素材图片在高分辨率屏幕上清晰显示;项目资源对话框点整行勾选 xuyueandClaude Opus 5.5 2026-10-25 18:49:34 +08:00
  • f304fc1ffc 窄屏工具栏不换行;数据库页面提示更新 xuyueandClaude Opus 5.5 2026-10-25 18:44:04 +08:00
  • fe62d50881 设计大窗体:运行区可收起、设计器缩放;工具箱补图标 xuyueandClaude Opus 5.5 2026-10-25 18:42:14 +08:00
  • f256b313f7 实验页"评价项"和自测:提交前自己检查,不计分 xuyueandClaude Opus 5.5 2026-10-25 18:35:25 +08:00
  • aadb2c9e93 Bun 升级到 1.4.4(Docker 镜像和 CI) xuyueandClaude Opus 5.5 2026-10-25 18:27:17 +08:00
  • 751c4c964d 修复 CI:评分操作控件前等它出现;README 更新待办 xuyueandClaude Opus 5.5 2026-10-25 18:24:41 +08:00
  • 65a1b3a81e 项目 8 智慧校园管理平台:5 个任务的示例、自绘素材、WisdomCampus 数据库 xuyueandClaude Opus 5.5 2026-10-23 15:15:00 +08:00
  • b20db5721e 评分规则加可见、窗体、程序退出、素材图片、图表数据点检查 xuyueandClaude Opus 5.5 2026-10-23 15:14:49 +08:00
  • 10c50265b2 第一次运行实验时自动建好预置的数据库 xuyueandClaude Opus 5.5 2026-10-23 15:14:49 +08:00
  • 5ae07b851d 路径里的反斜杠在 Linux 上换成斜杠 xuyueandClaude Opus 5.5 2026-10-23 15:14:49 +08:00
  • 2cd0111967 图表(Chart):运行时、Chart.js 绘制、设计器的"系列和图例" xuyueandClaude Opus 5.5 2026-10-23 15:14:49 +08:00
  • d60868d912 停靠布局、背景图片、无边框窗体;运行区按比例缩小、可放大 xuyueandClaude Opus 5.5 2026-10-23 15:14:34 +08:00
  • 42e258ddcd 实验页新建、删除类 xuyueandClaude Opus 5.5 2026-10-23 15:13:28 +08:00
  • 13c3e4c3ec 数据库:参数化的日期字符串比较时也转换格式 xuyueandClaude Opus 5.5 2026-10-23 15:13:28 +08:00
  • 19d6872d80 清理运行时的编译警告 xuyueandClaude Opus 5.5 2026-10-23 15:13:28 +08:00
  • eedf1aa2fb 项目 7 情景控制:虚拟时钟、项目资源、Windows Media Player、TrackBar xuyueandClaude Opus 5.5 2026-10-23 14:11:05 +08:00
  • a9af26c2d6 修复 CI:评分点表格前等那一行出现;程序出错时优先报异常;CPU 超时不再生成 core dump xuyueandClaude Opus 5.5 2026-10-23 10:20:58 +08:00
  • 670abe5921 项目 6 数据存储:仿冒 SqlClient(T-SQL 转写成 SQLite)、数据库页面、DataGridView、DateTimePicker xuyueandClaude Opus 5.5 2026-10-23 09:18:56 +08:00
  • 6b088240da 项目 4 任务 2 网络摄像机:PictureBox、Image / Bitmap、照片列表 xuyueandClaude Opus 5.5 2026-10-22 20:58:09 +08:00
  • 4ed9450c02 修复:手动改过输入框后,程序再把文字设回原值时输入框不刷新 xuyueandClaude Opus 5.5 2026-10-22 20:41:55 +08:00
  • 91b39603a2 项目 5 补齐:旧版线程 API(Suspend / Resume / Abort)与 ListBox xuyueandClaude Opus 5.5 2026-10-22 20:33:12 +08:00
  • 8a92354fe4 评阅页直接运行学生的程序;离开页面时结束正在运行的程序 xuyueandClaude Opus 5.5 2026-10-22 20:12:31 +08:00
  • 91237b85b8 CI:升级 actions/checkout 到 v7、actions/setup-dotnet 到 v6(Node.js 24) xuyueandClaude Opus 5.5 2026-10-22 20:01:29 +08:00
  • d6bcd11fb4 修复部署:数据卷属主是 root,平台用户写不进数据库 xuyueandClaude Opus 5.5 2026-10-22 19:50:00 +08:00
  • 6096992507 修复:编译服务、语言服务 stop() 后立即清空状态 xuyueandClaude Opus 5.5 2026-10-22 19:42:02 +08:00
  • 14a82a3e24 AI 评阅:DeepSeek Flash 给老师评分项出建议分和评语,老师采纳后生效 xuyueandClaude Opus 5.5 2026-10-22 19:37:50 +08:00
  • 302eae4f13 代码编辑器:代码补全、悬停提示、参数提示、边写边检查 xuyueandClaude Opus 5.5 2026-10-22 19:23:55 +08:00
  • 89e9956a22 评阅与成绩:老师看代码、运行学生程序、打分、写评语;成绩表与导出 xuyueandClaude Opus 5.5 2026-10-22 19:13:30 +08:00
  • 4e6b0d5cb2 布置作业、提交与自动评分 xuyueandClaude Opus 5.5 2026-10-22 19:02:22 +08:00
  • 37fc747b49 自动评分:评分规则和执行引擎 xuyueandClaude Opus 5.5 2026-10-22 18:20:41 +08:00
  • 5bb2940969 登录改用访问令牌 + 刷新令牌,不用 cookie xuyueandClaude Opus 5.5 2026-10-22 18:20:41 +08:00
  • a3eb563b70 设计器:Designer.cs 标签页默认隐藏 xuyueandClaude Opus 5.5 2026-10-22 18:20:41 +08:00
  • 400814d1f6 .env.example 写全所有配置项和默认值 xuyueandClaude Opus 5.5 2026-10-22 17:37:03 +08:00
  • 7cec273d58 第 2 阶段:账号与班级,作品保存在服务器 xuyueandClaude Opus 5.5 2026-10-22 17:36:11 +08:00
  • a00622be15 部署改为在服务器上构建:Actions 测试通过后 SSH 执行 deploy/update.sh xuyueandClaude Opus 5.5 2026-10-22 16:41:50 +08:00
  • 1cb2235c3d GitHub Actions:测试和自动部署 xuyueandClaude Opus 5.5 2026-10-22 15:56:09 +08:00
  • d5bec7c8af update xuyue 2026-10-22 15:43:15 +08:00
  • 697f31e9ce 部署:bubblewrap 沙箱、编译检查、访问口令、Docker Compose xuyueandClaude Opus 5.5 2026-10-22 15:40:09 +08:00
  • 081ac6f924 实训台按宽度自适应布局,可以收起 xuyueandClaude Opus 5.5 2026-10-22 11:34:21 +08:00
  • 4c53caf7fa 整理教材示例:项目 1 任务 2、项目 4 任务 1 和 3、项目 5 任务 1 xuyueandClaude Opus 5.5 2026-10-22 11:27:22 +08:00
  • 8feda289de 多窗体:新建 / 删除窗体,项目 1 登录示例;标识符支持中文 xuyueandClaude Opus 5.5 2026-10-22 11:23:37 +08:00
  • 02d2f0eabc 设计器:撤销 / 重做;工具箱、属性、事件窗口改为中文 xuyueandClaude Opus 5.5 2026-10-22 11:18:43 +08:00
  • ea5a25af06 窗体设计器:工具箱、拖放、属性与事件窗口,读写 VS 格式的 Designer.cs xuyueandClaude Opus 5.5 2026-10-22 11:11:48 +08:00
  • 03e80ce2e2 代码编辑器换成 Monaco:C# 高亮、错误波浪线与跳转、F5 运行、草稿保存 xuyueandClaude Opus 5.5 2026-10-22 10:56:34 +08:00
  • fbb8a334c3 设计方案迁入仓库(docs/设计方案.md),按第 0、1 阶段的实际实现更新 xuyueandClaude Opus 5.5 2026-10-22 10:38:04 +08:00
  • 942c319bab 灯泡、报警灯改用自绘 SVG,删除教材配套资料中的图片 xuyueandClaude Opus 5.5 2026-10-22 10:36:52 +08:00
  • 26104ae81e 第 1 阶段:虚拟实训台,项目 2、3 的示例跑通 xuyueandClaude Opus 5.5 2026-10-22 10:32:38 +08:00
  • 98be8331bc 第 0 阶段:教材项目 2 任务 1 在网页中原样运行 xuyueandClaude Opus 5.5 2026-10-22 10:15:14 +08:00