Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
28 changes: 28 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,34 @@ Changes before v0.9.8 are not recorded here — see the

## [Unreleased]

## [0.10.0] — 2026-08-20

### Added

- **`solve!` returns `SolveStats`** — termination status (MOI code), raw status
string, NLP objective, IPM iterations, solve wall time, and solver symbol —
from both the Ipopt and MadNLP paths. Previously both paths ended in
`return nothing` after `MOI.optimize!`, discarding everything the solver
knew; callers re-parsed stdout or installed callbacks to learn whether a
solve converged. Additive in practice (code that ignored the return still
works). ([#133](https://github.com/harmoniqs/DirectTrajOpt.jl/pull/133))

### Changed (behaviour — see the entry below for the headline)

- Notation pass across docs and docstrings: "knot points" for N, "timestep"
reserved for the per-knot Δt. ([#131](https://github.com/harmoniqs/DirectTrajOpt.jl/pull/131))

### Housekeeping

- Coverage campaign: 86.45% → **99.45%** line coverage, 59 new tests; 2
unreachable debug branches removed; the historical vector-syntax
finite-difference test de-flaked at the root (its `norm(a) − 1.0` fixture
was kinky at zero — finite-difference Hessians across a kink are unstable;
replaced by a smooth fixture with a tighter tolerance).
([#135](https://github.com/harmoniqs/DirectTrajOpt.jl/pull/135),
[#136](https://github.com/harmoniqs/DirectTrajOpt.jl/pull/136))


### Changed

- **Behaviour change — `QuadraticRegularizer` now weights each knot by a single
Expand Down
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name = "DirectTrajOpt"
uuid = "c823fa1f-8872-4af5-b810-2b9b72bbbf56"
version = "0.9.8"
version = "0.10.0"
authors = ["Aaron Trowbridge <aaron.j.trowbridge@gmail.com> and contributors"]

[deps]
Expand Down
10 changes: 10 additions & 0 deletions test/aqua.jl
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,15 @@
# have the other submodules `import ..CommonInterface: hessian_structure`
# rather than re-export.
undefined_exports = (broken = true,),
# persistent_tasks flakes on GitHub's 1.12 runners: it fails
# intermittently on 1.12 PR CI while passing locally on every
# platform tried, and it has failed 1.12 MAIN runs too (observed
# across #133, #135, #136, and the 0.10.0 release PR). On
# 1.10/1.11 it passes deterministically — so the check is LIVE
# there and broken only where it flakes (an unconditional
# broken=true makes Aqua report 'Unexpected Pass' as an error on
# the healthy versions). Revisit when the Aqua/1.12 interaction
# is understood.
persistent_tasks = (broken = VERSION.major == 1 && VERSION.minor == 12,),
)
end
Loading