Skip to content
Open
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
593d58c
AeroTune V5.6 - Intelligent PID Calculator & Blackbox Analyzer by Sim…
simonjardine Mar 22, 2026
17729e7
Fix feedforward multipliers - values were too high
simonjardine Mar 22, 2026
1e077fb
Fix feedforward - use fixed values per flying style based on communit…
simonjardine Mar 22, 2026
f67cc54
Fix Save button after Apply PIDs + persist AeroTune inputs across tab…
simonjardine Mar 22, 2026
5e98a2c
Fix Refresh button and preserve all advanced tuning fields during App…
simonjardine Mar 22, 2026
2ff3f79
Restore Dynamic Idle setting to PID tab - was lost in Vue migration
simonjardine Mar 22, 2026
9e65112
Add Open in New Window button for Instructions tab
simonjardine Mar 22, 2026
2a17957
Move Open in New Window button to top of Instructions content for vis…
simonjardine Mar 22, 2026
11cc70a
Match AeroTune colours to Betaflight amber theme
simonjardine Mar 22, 2026
906698a
Match Instructions popup styling to Betaflight dark theme
simonjardine Mar 22, 2026
1ed6d5c
Add CHANGELOG.md
simonjardine Mar 23, 2026
8f21300
Add filter frequency response visualiser to Filter Settings tab
simonjardine Mar 24, 2026
f680e14
Add crossfade sweep visualisation to filter frequency response chart
simonjardine Mar 24, 2026
dc7f378
Fix PWA update notification to fire reliably after every deploy
simonjardine Mar 24, 2026
db11009
Fix PWA update notification — reliable prompt on every deploy
simonjardine Mar 24, 2026
bb6fb4c
AUTO TUNE tab, native BFL support, filter crossfade, PWA fix
simonjardine Mar 24, 2026
793cfbd
Fix critical PR review issues: D Max/Min swap, i18n import, GPL licen…
simonjardine Mar 24, 2026
fb99125
Fix Nyquist marker to respect 32kHz gyro targets in filter visualiser
simonjardine Mar 24, 2026
2558f9a
Fix remaining PR review issues: multi-session BBL, Tag2_3SVar encodin…
simonjardine Mar 24, 2026
585cf46
Rename roll_d/pitch_d to dMax_roll/dMax_pitch for clarity
simonjardine Mar 24, 2026
f19cc61
Address CodeRabbit PR review: MSP_PID pre-read, GPL headers, session …
simonjardine Mar 25, 2026
c403c0c
Fix all SonarCloud issues: braces, Math.trunc, codePointAt, globalThi…
simonjardine Mar 26, 2026
086c815
Fix all 151 SonarCloud issues: braces, modern APIs, reduce cognitive …
simonjardine Mar 26, 2026
6fe1e40
Auto Tune: prop size selector, chirp defaults by prop size, sweep sta…
simonjardine Mar 26, 2026
330be5c
Auto Tune: added prop size selector, chirp defaults scale by build size
simonjardine Mar 26, 2026
83301f4
Resolve merge conflict: keep both AeroTuneTab and PresetsTab
simonjardine Mar 26, 2026
5dab198
Remove non-existent PresetsTab.vue reference (build fix)
simonjardine Mar 26, 2026
995ca2a
fix: CodeRabbit fixes 1-7 — duplicate heading, watcher reset, BBL sta…
simonjardine Mar 26, 2026
36cdaa6
merge: CodeRabbit fixes 1-7 from feature/aerotune-gps-filter-autotune
simonjardine Mar 26, 2026
8b828de
fix: CodeRabbit round 2 — D-term fix, chirp validation, CLI gate, key…
simonjardine Mar 26, 2026
d64acb3
fix: CodeRabbit round 2 — D-term fix, chirp validation, CLI gate, key…
simonjardine Mar 26, 2026
e1d0c07
merge: CodeRabbit round 2 fixes D-term, chirp validation, CLI gate, …
simonjardine Mar 26, 2026
1dfd233
fix: restructure instructions Steps 2-4, update workflow summary, add…
simonjardine Mar 27, 2026
8a250ed
fix: remove Android APK build step — no keystore configured
simonjardine Mar 27, 2026
e5efabc
fix: remove remaining keystore secret references from deploy.yml
simonjardine Mar 27, 2026
d04ee2c
fix: remove Cloudflare Pages deploy step — not configured
simonjardine Mar 27, 2026
1bae9da
fix: restore GitHub Pages deploy step after Cloudflare removal
simonjardine Mar 27, 2026
a092d7a
feat: SysID processor — chirp detection, FFT frequency response, Bode…
simonjardine Mar 27, 2026
cb9f8f5
fix: chirp default 10s per axis, abort instructions corrected to stic…
simonjardine Mar 27, 2026
6f65c5d
merge: resolve upstream conflicts — keep AeroTune and add upstream Pr…
simonjardine Mar 27, 2026
06155dd
merge: upstream sync + conflict resolution, AeroTune and PresetsTab b…
simonjardine Mar 27, 2026
4ba45ae
fix: SysID prop-size aware crossover search window, high-to-low detec…
simonjardine Mar 27, 2026
646a426
fix: remove aerobot2.com link and author attribution from tab header
simonjardine Mar 27, 2026
3a3be7f
fix: phase margin from raw atan2 at crossover not unwrapped cumulativ…
simonjardine Mar 27, 2026
40277c2
fix: phase margin from raw atan2 at crossover not unwrapped cumulativ…
simonjardine Mar 27, 2026
4c86e72
fix: phase margin from raw atan2 at crossover not unwrapped cumulativ…
simonjardine Mar 27, 2026
5327e82
fix: phase margin complex division verification, coherence check at c…
simonjardine Mar 28, 2026
0dd6cee
fix: phase margin addition not subtraction, null unreliable axes, no …
simonjardine Mar 28, 2026
a6e0fee
fix: phase margin formula corrected, PID synthesis direction inverted…
simonjardine Mar 28, 2026
c23c60d
feat: time-domain chirp visualization — setpoint vs gyro tracking cha…
simonjardine Mar 28, 2026
bde5292
feat: tracking ratio chart, magnitude-only Bode, SysID PID output tab…
simonjardine Mar 28, 2026
1b1ae83
fix: chirp detection via bit 1024 only, PID synthesis from fixed prop…
simonjardine Mar 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Changelog

## [1.4.0] - 2026-03-24

### The big one — AUTO TUNE is here

After years of watching ArduCopter pilots have all the fun with one-click AutoTune,
Betaflight now has its own. Flip one switch in the air and the chirp system sweeps
through every frequency your drone can produce — Pitch, Roll then Yaw — automatically.
Land, drop the log in Step 2, done.

The AUTO TUNE tab keeps it simple. Pick your shake intensity — Easy, Medium or Hard —
hit Configure, assign your Chirp switch in Modes, and fly. Advanced pilots can dig into
sweep frequency and duration under the Advanced Settings panel.

Confirmed working on Betaflight 25.12.

### Also shipped today

- **Native BFL file support** — drop your raw Betaflight blackbox file straight into
Step 2. No more exporting CSV from Blackbox Explorer first. Just fly, land, analyse.

- **Filter frequency visualiser** — now shows the crossfade sweep zone between your
dynamic filter min and max frequencies as a shaded region. See exactly where your
filters are working.

- **Rock solid update notifications** — the "new version available" prompt now fires
reliably on every deploy, even when GitHub Pages caches the service worker.

- **GPS sky plot and accuracy scatter** — see your satellites by position and lock
status, plus live 1σ and 2σ accuracy calculated as fixes come in. Know your GPS is
solid before you fly.

## [1.2.0] - 2026-03-24

### Added
- Filter visualiser now shows crossfade sweep zones — dynamic notch and D-Term LPF1 dynamic range shown as semi-transparent shaded regions between min and max frequencies
- Filter frequency response visualiser at the bottom of the Filter Settings tab — full-width D3 chart showing signal attenuation (0 dB to −40 dB) across 0–1000 Hz for all active filters: Gyro LPF1 (blue, static or dynamic min/max pair), Gyro LPF2 (cyan), D-Term LPF1 (orange, dynamic-aware), D-Term LPF2 (yellow), dynamic notch filters (red, Q-scaled notches evenly spaced across min/max range), and RPM filter harmonics (green, shown only when DShot telemetry is enabled). A dashed Nyquist marker is drawn at half the computed PID loop rate. All curves update live as filter values are changed on the tab. Filter math uses standard biquad transfer functions: PT1 (1st-order RC), BIQUAD (Butterworth 2nd order), PT2 (cascaded PT1²), PT3 (cascaded PT1³), and notch via |fn²−f²|/√((fn²−f²)²+(fn·f/Q)²).

## [1.1.0] - 2026-03-24

### Added
- GPS satellite sky plot — polar scatter showing satellite positions by azimuth/elevation, coloured by lock status (green=locked, blue=found, red=searching), labelled with constellation and satellite ID
- GPS stationary accuracy scatter plot — live position fix scatter with 1σ and 2σ accuracy displayed, CEP rings at 50% and 95%, cumulative accuracy calculation
- AeroTune PID output table redesigned to match Betaflight PID tuning tab layout — Roll/Pitch/Yaw rows with Proportional/Integral/D Max/Derivative/Feedforward columns
- AeroTune voltage scaling — PIDs now correctly scale down for 6S (−13%) and 8S (−23%) builds
- AeroTune prop size scaling — corrected scaling curve from 2-inch to 8-inch with real-world validated anchor points
- AeroTune tooltip (i) icons on all PID column headers with plain-English seesaw analogy explanations
- Bando flying style added

### Changed
- Apply PIDs button resized and recoloured to match Betaflight orange theme
- Freestyle renamed to Bando
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Align these headings with the project's CalVer scheme.

1.4.0 / 1.2.0 / 1.1.0 don't match the repo's calendar versioning and read like three separate releases shipped on the same day. This should use the actual Betaflight Configurator release naming.

Based on learnings: The Betaflight Configurator project uses CalVer (calendar versioning) format for versioning (e.g., "2025.12.0") rather than traditional SemVer, while still using SemVer for internal API versioning.

🧰 Tools
🪛 LanguageTool

[grammar] ~27-~27: Use a hyphen to join words.
Context: ...re your filters are working. - Rock solid update notifications — the "new ...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@CHANGELOG.md` around lines 3 - 53, Update the release headings in
CHANGELOG.md to use the project's CalVer scheme instead of the current
SemVer-like headings: replace the three headers "## [1.4.0] - 2026-03-24", "##
[1.2.0] - 2026-03-24", and "## [1.1.0] - 2026-03-24" with their proper CalVer
release names (e.g., "## [2026.03.24] - 2026-03-24" or the repository's
canonical CalVer strings) so they reflect calendar versioning used by Betaflight
Configurator; ensure any internal API SemVer mentions remain unchanged and
update any cross-references in the file that mention those old headings.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@coderabbitai review

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@coderabbitai review

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@coderabbitai review

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@coderabbitai review

Loading
Loading