Skip to content

Releases: raylanlin/smarttune-cli

SmartTune CLI v2.3.1

18 May 16:23

Choose a tag to compare

Patch release adding a dedicated MCP-only SmartTune skill for read-only customer-support agents.\n\n- Adds skill-mcp/SKILL.md for agents without exec/shell/write permission\n- Documents SmartTune MCP tool workflow and safety boundaries\n- Keeps v2.3.0 MCP server/runtime behavior unchanged\n\nVerification: pytest -q -> 141 passed

SmartTune CLI v2.3.0

18 May 16:03

Choose a tag to compare

SmartTune CLI v2.3.0

Added

  • Read-only MCP server via smarttune-mcp for OpenClaw and other MCP clients.
  • smarttune_list_platforms, smarttune_log_quality, and smarttune_analyze_log MCP tools.
  • Pure service layer under smarttune/services/ for analysis and JSON-safe serialization.
  • MCP security tests for extension allowlists, path traversal, symlink escape, and file size limits.

Security

  • MCP tools do not expose subprocess, shell execution, arbitrary output paths, parameter writes, or filesystem mutation.
  • Path validation resolves symlinks, enforces allowed roots, rejects unsafe extensions, and respects SMARTTUNE_MCP_MAX_FILE_MB.
  • Betaflight .txt remains CLI-supported but is intentionally excluded from the MCP allowlist.

Fixed

  • Fixed MagFit import indentation.
  • Hardware analysis service uses the existing generate_hardware_report() path.

Verification

  • pytest -q -> 141 passed
  • MCP smoke-tested against a real ArduPilot .BIN log.

v2.2.0 — English Docs & CLI Help Improvements

06 May 09:46

Choose a tag to compare

What's Changed

  • 🌐 All documentation converted to English (SKILL.md, ROADMAP.md, MIGRATION.md)
  • 📖 Complete --help descriptions for all subcommands (pid, fft, sysid, hardware, magfit)
  • 🤖 SKILL.md for OpenClaw agent integration
  • 🧹 Deprecated ardupilot-tune skill/CLI replaced by stune

Platform Support

Platform Format Status
ArduPilot .bin / .log ✅ Full
Betaflight .bbl / .bfl ✅ Full (v2.0)
PX4 .ulg 🔲 Partial (v2.1)

Full changelog

9a760a0 chore: sync version to 2.2.0 (pyproject.toml + __init__.py)
9e26108 feat(cli): add complete --help descriptions for all subcommands
6303c3d docs: convert all docs and skill to English (SKILL.md, ROADMAP.md, MIGRATION.md)
32ace2d feat(skill): add SmartTune SKILL.md for OpenClaw agent - replace deprecated ardupilot-tune skill
49be79e docs(readme): convert Agent Analysis Report to Markdown tables
dfb6d81 docs(readme): switch example images to dark theme
cce6f8f fix(plots): subtle light theme - gray reference lines and invisible borders
d3063ab feat(plots): customize dark theme colors
0ffc943 feat(cli): add --theme light|dark option for plot generation
b416ef9 docs(readme): add agent analysis report example section
371c736 revert(assets): restore original light-themed APM example image
ba576db revert(plots): restore original light theme, remove all dark_background attempts
3250841 refactor(plots): use matplotlib dark_background style instead of manual rcParams
d719542 fix(plots): compact layout for GitHub README (formatter changes gitignored)
73024c5 docs(readme): dark theme plots, move examples to end section
349659d docs(readme): add PID step response example images for ArduPilot and Betaflight
dec397d docs(readme): update for v2.1.0

v2.1.0 — Platform-Specific Analyzers

05 May 13:25

Choose a tag to compare

v2.0.2: BBL Parser Critical Fixes

05 May 01:59

Choose a tag to compare

BBL Parser Fixes

Fixed 8 critical bugs in Betaflight Blackbox log parser:

Bug Impact
TAG8_4S16 nibble packing Frame sync loss → all fields corrupted
TAG2_3S32 tag bit extraction axisI decoded as zero
NEG_14BIT sign extension vbatLatest and fields wrong
P-frame predictor history Difference decoding errors
loopIteration segment detection Parser stopped after ~3K frames per segment
0x48 byte false header Parser hangs on valid data
P interval sample rate Duration wrong (41s→165s)
Quality filter threshold Empty charts (rad/s↔deg/s mismatch)

Results

  • BLL-PD.bbl: 1s → 91s parsed, 158K PID samples/axis
  • H5_51377_6S_F722.bbl: 1s → 166s parsed, quality 45→75 (POOR→GOOD)

Credits

  • BBL parser loopIteration fix: internal
  • Remaining 7 fixes: Claude Code via ACP session

Full Changelog: v2.0.1...v2.0.2

v2.0.1 — PID unit contract fix + FFT threshold + CLI docs

04 May 03:09

Choose a tag to compare

🐛 Bug Fixes

ArduPilot 单位契约修复

  • rad/s → deg/s 自动转换:PIDR/ATC_RAT_* 消息 Tar 字段自动检测单位(max < 6.5 判定为 rad/s)
  • PIDR 字段兼容:支持 Tar(新固件)和 Des(旧固件)
  • modern/legacy 消息源正确分离:修复旧版 PIDR+RATE 混入 bug

FFT 阶跃响应精度修复

  • min_target_amplitude 阈值从 0.349(rad/s)改为 3.0(deg/s)
  • Roll 峰值从 0.52 恢复到 0.64(与旧版 0.65 一致)

CLI --help 文档完善

  • 版本号同步至 2.0.1
  • Betaflight 状态: Planned → Full support
  • PX4 状态: Planned → Partial support
  • 7 个子命令 --platform/--visual 选项添加帮助文本

包含 Commits

Commit 说明
3a3ae08 ArduPilot PID 单位契约修复 + PIDR 兼容 + CLI 增强
86fde58 FFT 阈值同步 deg/s
c2988ef 版本号 + 平台状态 + 子命令帮助文本完善

v2.0.0 — Multi-platform release

03 May 15:21

Choose a tag to compare

SmartTune CLI v2.0.0

Multi-platform flight log analysis & tuning advisor CLI — ArduPilot + Betaflight + PX4

What's New

  • Multi-platform architecture — Unified FlightData representation across ArduPilot, Betaflight, and PX4
  • Betaflight support — Pure Python BBL parser, FF/RPM/D-term noise analyzers
  • Platform auto-detectionstune analyze detects platform from log headers
  • ParamRef system — Generic parameter names mapped to each platform
  • 6-layer Knowledge Base — common → platform → user → Pro layers
  • Error code system — Standardized E10xx-E50xx error classification

Quick Install

pip install smarttune
stune analyze -i flight-log.BIN

96 tests · 3 platforms · fully offline