# Keil MDK - Build artifacts *.o *.d *.crf *.axf *.hex *.map *.lnp *.dep # Keil UV4 预处理列表文件("Generate preprocessed source file" 选项产生的构建中间物,勿入库) *__i *._ia *.build_log.htm *.htm *.log *.lst *.dep .workbuddy-ai/ # Keil MDK - Build log (regenerated by keil_build.py) MDK-ARM/build_log.txt # legacy: download.bat removed 2026-10-10; entry kept so stale leftovers on # other machines do not surface as untracked files MDK-ARM/download_log.txt MDK-ARM/err.txt MDK-ARM/out.txt MDK-ARM/ret.txt # Keil MDK - IDE settings (user-specific) *.uvoptx *.uvguix.* # Keil MDK - Debug config *.dbgconf # Keil MDK - RTE auto-generated MDK-ARM/RTE/ # STM32CubeMX (keep .ioc, it's the project source) # *.ioc # CubeMX 重生成时自动产生的旧文件备份(Src/Backup/、Inc/Backup/)—— # 纯本地临时物,内容 = 重生成前的快照;入库只会造成无意义的提交抖动 Src/Backup/ Inc/Backup/ # Visual Studio / IDE .vs/ .vscode/ *.suo *.njsproj *.sln *.suo *.user *.opensdf *.cache # Windows Thumbs.db ehthumbs.db *.tmp *.temp # Linux / Mac .DS_Store # LVGL - Unused directories (only src/ is compiled) Lib/lvgl/demos/ Lib/lvgl/tests/ Lib/lvgl/docs/ Lib/lvgl/libs/ Lib/lvgl/scripts/ Lib/lvgl/env_support/ Lib/lvgl/examples/ Lib/lvgl/.github/ Lib/lvgl/.devcontainer/ Lib/lvgl/zephyr/ Lib/lvgl/xmls/ Lib/lvgl/configs/ # LVGL - Build system files not needed for Keil # NOTE: Lib/lvgl/CMakeLists.txt is REQUIRED by the PC simulator (simulator/), # so it is tracked despite being a build-system file. Do not re-ignore it. Lib/lvgl/CMakePresets.json Lib/lvgl/component.mk Lib/lvgl/idf_component.yml Lib/lvgl/Kconfig Lib/lvgl/library.json Lib/lvgl/library.properties Lib/lvgl/lvgl.mk Lib/lvgl/lvgl.pc.in Lib/lvgl/SConscript Lib/lvgl/sconscript # LVGL PC Simulator - build artifacts simulator/build/ sim_dbg.log # 模拟器宿主侧产物(lvgl_sim.exe / 测试脚本在 CWD 生成,不入库): # sim_config.ini = net_cfg_load 首启工厂默认落盘;sim_*.log = syslog 后端宿主文件 sim_config.ini sim_run.log sim_selftest.log # LVGL PC Simulator - screenshot outputs (generated, see simulator/i1_to_png.py) simulator/shot*.png simulator/shot*.bin simulator/*.ppm simulator/__pycache__/ # LVGL PC Simulator - SDL2 SDK (downloaded, see docs/UI 设计/LVGL模拟器部署与使用说明.md §3.1 与 docs/项目部署环境要求.md 第 3 步) simulator/SDL2/ # Binary / large files *.bin # 主机侧单元测试产物(MSVC 中间物;test/host/**/run_unit_test.py 正常写 %TEMP%, # 但手工直接调 cl.exe 调试时可能落在 CWD。统一兜底忽略) *.obj *.exe *.pdb *.ilk # 内容页像素黄金参考 ref/*.bin **已入库**(2026-10-22):整目录不入库时,任何新克隆 / # 新工作树跑 ui-golden 都必然 FAIL(缺基准),这条像素回归就只在老机器上真实存在。 # 交叉验证:两份各自独立构建的 lvgl_sim(不同构建目录、相隔 11 天的代码)对同一批 ref # 逐字节一致 → 渲染可复现,基线可入库。派生的目检 PNG 仍是本地产物,继续忽略: simulator/tests/ref/*.png # ⚠ 上面第 115 行的全仓 `*.bin` 兜底(挡模拟器的 sim_netcfg.bin 之类运行产物)会连入库的 # 黄金参考一起挡掉 → 必须显式反选;反选只有排在 `*.bin` **之后**才生效(.gitignore 后者覆盖前者) !simulator/tests/ref/*.bin # 架构图 PNG 预览(源为 docs/images/*.svg,PNG 本地渲染生成,不入库) docs/images/*.png *.pyc # Python venv (unified env, see AGENTS.md "Python 环境"; rebuild via requirements.txt) .venv/ # Serial assistant runtime state (daemon log/meta, local runtime artifacts) .dsh/skills/serial-assistant/scripts/state/ # agent 会话草稿(2026-10-14 定):提交信息草稿 / 门禁输出 / 台架日志 / 一次性改名 # 脚本 / 故障注入 patch —— 一律不入库,**而且不落仓库根**(写进 ci-artifacts/ 或系统临时 # 目录:2026-10-28 清理仓库根时那里堆着四个一次性计数改名脚本 + 一份提交信息草稿,全是 # 未跟踪的 ?? —— 一次 git add -A 就进历史;仓库根只留工程配置与生成器输入两份 .txt)。 # 判据三条,命中任一就不值得留: # ① 能重跑的(门禁输出、日志);② 内容已在 git 历史里的(已合并实现的过程 diff); # ③ 离开已丢弃的任务分支就跑不通的(依赖 NET_FAULT_INJECT 的注入产物)—— # 这种提交进去是"看着有证据、实际不可复现"的假证据,**方法应沉淀成文档文字** # (见 docs/网络/网络自愈架构设计.md §5.2 E18/E19)。 # ⚠ .dsh/skills/ 是**入库的项目知识**(skills = 子域方法论),必须放行。 .dsh/* !.dsh/skills/ # 记忆工具(Mnemon)本地状态:项目文档索引 documents/ + 运行时记忆 # runtime/MEMORY.md、USER.md、memories.json。**只留本机、不进版本库** # (2026-10-11 定):记忆是按机器/按人累积的私有状态,入库会让每次记忆 # 写入都变成提交抖动,还可能带出本机绝对路径与个人偏好。 .mnemon/ # CI 运行时产物(.gitea/workflows/ci.yml 的 S3 步骤在 runner 工作区落盘的日志; # 零依赖存档方案——落在工作区目录而非上传 artifact,故必须忽略以免误提交) # 子进程环境残缺时 Windows 会按字面量建目录(本会话实测两次复发:UV4 / 字体 # 工具在缺 SystemDrive、ProgramData 的环境里于仓库根创建 # %SystemDrive%/ProgramData/Microsoft/Windows/Caches/*.db,约 1 MB 字体缓存库)。 # 与"一次性中间产物不进 .gitignore"那条教训不同:这是任何一条道随时可能再生的环境 # 副产物,不兜住就会被某次 git add -A 带进历史。正解仍是继承完整环境跑这类工具。 %SystemDrive%/ ci-artifacts/ # 提交信息草稿的兜底反选(上一条草稿块的「不入库」靠人自觉把文件写进 ci-artifacts/, # 但 `git commit -F` 那份文件随手落在仓库根就会以 ?? 出现,被某次 add -A 带走): # 正文已经进了 commit message,落盘副本零信息量 → 根目录锚定挡掉这个命名。 /commitmsg*.txt # DSH worktree 插件(dsh-task-worktree)把任务树建在**仓库内**这个命名空间下,与 # @task skill 的仓外 _wt/ 两套并存。这一行必须**先由我们自己写好**:插件首次 create # 会往 .gitignore 追加分毫不相同的字面量(ensureIgnored 见同名规则即跳过),但那等于 # 在会话中途改这份受控文件——门禁 diff 里冒出一行"不是我加的"最坑人。 # 该目录同时登记进了 check_doc_links / gen_refgraph / check_layer_deps 的排除面 # (整份仓库副本不能进全库扫描);细节 → .dsh/skills/task-worktree/SKILL.md .dsh-worktrees/ .obsidian/