Skip to content

feat: accept {en, zh} tables for parameter and key mapping labels - #11

Merged
carlvon17 merged 1 commit into
mainfrom
feat/localized-labels
Nov 5, 2026
Merged

carlvon17 merged 1 commit into
mainfrom
feat/localized-labels

Conversation

@cmjang

@cmjang cmjang commented Oct 28, 2026

Copy link
Copy Markdown
Contributor

关联

配合 OpenLegged/BotLab#67:BotLab 的参数与按键映射 label 支持 {"en": ..., "zh": ...} 译文表,界面按语言显示。本 PR 让本地 CLI 接受同一写法。

改动

  • src/botlab/_host.py:参数 label 与 options[].label 接受纯字符串或译文表(key 仅 en/zh,必须含 en,值非空);纯字符串规则不变。
  • src/botlab/sdk/_declaration.py、src/botlab/sdk/_robot.py:从 BotLab 镜像 _localized_text 及 robot.commands(mappings=[{"label": ...}]) 的校验。只镜像了这两处 hunk:scripts/sync_sdk.py 整体同步会同时带入 BotLab dev 上的 imu_sensors 观测参数,而本仓原生 runner 尚未支持 imuSensors,不应夹带进来;该部分留给对应功能同步。
  • 兼容性:旧工程(纯字符串 label)行为与计划输出不变。BotLab 内置模板改用译文表后,需要本 PR 发版的 CLI 才能 botlab run / validate 这些模板——旧 CLI 会报 label must be a non-empty string。
  • 上线顺序:两侧可同时进入各自集成分支;BotLab 模板改动对外生效前,本仓应已发版(或在 BotLab 发布说明里注明需升级 CLI)。

测试方式

  • uv run ruff check . → All checks passed
  • uv run pytest --basetemp=tmp/pytest → 804 passed, 10 skipped, 2 deselected
  • uv run python -m botlab._runtime.golden_check tests/fixtures/processors.json → 54 cases within tolerance
  • 新增 tests/test_host.py::test_localized_parameter_labels 与 test_invalid_localized_parameter_labels(缺 en / 未知语言 / 空译文 / 非法类型)。
  • 未跑:uv build --wheel + verify_wheel.py(本地 worktree 无 UI 快照,用 BOTLAB_ALLOW_MISSING_UI=1 安装测试环境)。

风险

  • 若 BotLab 先上线模板而 CLI 未发版,本地 CLI 用户运行新模板会在参数校验处失败(硬失败,不会静默错显)。
  • 回滚:回退本 PR 即恢复纯字符串校验;BotLab 侧模板同步回退。

AI 使用说明:

  • 模型:Claude Opus 5.5(claude-opus-5-5)。
  • 生成内容:本 PR 全部改动(_host.py 校验、SDK 镜像 hunk、测试)。
  • 人工修改:待确认(尚未经人工 review)。
  • 风险点:校验规则需与 BotLab 前端 localizedText.ts、SDK _declaration.py 三处一致——AI 核对:_localized_text 与 BotLab 镜像逐字一致,_host 版本仅报错类型不同;无新增兜底,非法输入一律抛 BotLabError。

@carlvon17
carlvon17 merged commit 96535e0 into main Nov 5, 2026
4 checks passed
@carlvon17
carlvon17 deleted the feat/localized-labels branch November 5, 2026 11:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants