What's Changed
- Debug airfoil sign error by @danieljvickers in #1443
- toolchain: bump ffmt 0.4.0 -> 0.4.1 by @sbryngelson in #1457
- refactor(params): auto-generate Fortran namelists from Python, eliminate toolchain duplication by @sbryngelson in #1456
- feat(params): support real(stp) declarations in Fortran codegen by @sbryngelson in #1458
- Remove gcov coverage-cache test selection (--only-changes) by @sbryngelson in #1460
- Coverage-based test selection (done right) — shadow mode by @sbryngelson in #1461
- ci: wire CACHE_PUSH_TOKEN so the coverage-map refresh actually pushes by @sbryngelson in #1462
- fix(coverage): exclude convergence tests from map build; harden refresh bot commit by @sbryngelson in #1464
- ci(coverage): push refreshed map via GitHub App token (ruleset bypass) by @sbryngelson in #1465
- ci(coverage): use app token for push (persist-credentials: false) by @sbryngelson in #1466
- ci(coverage): push refreshed map via classic PAT (CACHE_PUSH_TOKEN) by @sbryngelson in #1467
- ci(coverage): make health check robust to un-loadable (chemistry/cantera) cases by @sbryngelson in #1471
- ci(test): enforce coverage-based test selection on PRs by @sbryngelson in #1468
- ci(coverage): guard health-check skip against empty exception message by @sbryngelson in #1474
- Reject chemistry with num_fluids > 1 in case validator by @sbryngelson in #1472
- Local Aware IBM by @danieljvickers in #1378
- Fix --debug/--reldebug GPU builds by @sbryngelson in #1527
- Fix numerical Schlieren for single fluid IGR + add case validation guard for schlieren_alpha by @Cowsreal in #1477
Full Changelog: v5.3.3...v5.4.0