Choreo v2026.0.0-beta-1
Pre-releaseChoreo v2026.0.0-beta-1
This first 2026 prerelease is mostly non-user-facing build system improvements. The changes highlighted below are not an exhaustive list, and focuses on potentially breaking changes or new workflow features.
ChoreoLib Vendordep URL (Java/C++)
https://choreo.autos/lib/ChoreoLib2026Beta.json
Though we published a Python 2026.0.0 beta 1 ChoreoLib, that still is against the last 2025 RobotPy stable release, since RobotPy has not released 2026 betas yet.
Trajectory Schema Change
The .traj schema version is now 2. This version adds an alpha parameter to the DifferentialSample: the chassis angular acceleration of the state in rad/s².
- This is exported to support better interpolation of differential samples. See the ChoreoLib section.
NOTE: Trajectories of both drive types will need to be regenerated after first being opened in this version.
ChoreoLib
All
-
ChoreoLib Java and C++ are updated to work with WPILib v2026.1.1-beta-1. ChoreoLib Python is still built against the last RobotPy stable release.
-
ChoreoLib is now hosted on the Artifactory instance shared with WPILib.
-
DifferentialSample is updated to reflect the above schema change. This is BREAKING for code that constructs DifferentialSamples directly.
-
For both SwerveSamples and DifferentialSamples, interpolation now integrates the acceleration instead of linearly interpolating all elements of the state.
Java
AutoRoutine- Removed the deprecated function. Use
anyDoneDelayed.
- Removed the deprecated function. Use
@Deprecated(forRemoval = true, since = "2025")
public Trigger anyDone(
int cyclesToDelay, AutoTrajectory trajectory, AutoTrajectory... trajectories)C++
- Removed the deprecated
kTrajSpecVersioninutil/TrajSchemaVersion.h. UsekTrajSchemaVersion.
Python
- Added FMS Usage Reporting for ChoreoTrajectory
Choreo GUI
- Choreo is now using Tauri v2 instead of v1.
- Add timestamp of last project save, in the main menu.
- Added button to save an unsaved project. This is next to the Undo and Redo buttons.
- The sidebar icon next to each path is now clickable to generate the path if it is stale.
- Added Generate All button.
What's Changed
- fix: param order in AutoFactory by @samfreund in #1193
- Fixed Incorrect game name by @SpaceStudios in #1200
- Fix angular velocity typo in C++ sample code by @dkt01 in #1203
- [trajoptlib] Rename append_vector() to append_range() by @calcmogul in #1204
- Fix redundant guard warning from clippy by @calcmogul in #1205
- [choreolib] Comment out flaky timing assertions by @calcmogul in #1206
- Fix Javadoc 21 warning and clean up generated files by @calcmogul in #1207
- [trajoptlib] Upgrade to Catch2 3.8.0 by @calcmogul in #1211
- Update readme link to examples by @calcmogul in #1218
- Fix clippy warnings by @calcmogul in #1226
- [ci] Upgrade to wpiformat 2025.33 by @calcmogul in #1225
- Fix nested if-let indentation by @calcmogul in #1227
- [ci] Upgrade sccache action by @calcmogul in #1228
- [choreo] Upgrade to Tauri v2 by @calcmogul in #489
- [trajoptlib] Use C++23 by @calcmogul in #1224
- [trajoptlib] Upgrade Sleipnir for faster solves by @calcmogul in #1223
- [trajoptlib] Give each sample its own dt by @calcmogul in #1123
- [ci] Upgrade sccache action by @Gold856 in #1231
- [trajoptlib] Rename files to snake case by @calcmogul in #1229
- [trajoptlib] Rename functions and variables to snake case by @calcmogul in #1230
- [ci] Cache cargo test artifacts by @calcmogul in #1232
- File saving overhaul: Write files immediately w/ error passback, loud feedback on saving. by @shueja in #1221
- [docs] Update compiler requirements by @calcmogul in #1234
- Use C++23 preview flag on Windows by @calcmogul in #1236
- Fix spelling of CI initialism in log by @calcmogul in #1237
- [trajoptlib] Make test executables use snake case by @calcmogul in #1238
- [trajoptlib] Fix return docs for generate() by @calcmogul in #1239
- [ci] Make cargo test do release build by @calcmogul in #1240
- Remove libgit2 dependency from build info gathering by @calcmogul in #1235
- [trajoptlib] Run C++ examples in CI by @spacey-sooty in #629
- [trajoptlib] Make more variables use snake case by @calcmogul in #1241
- [docs] Specify Visual Studio version in contributing docs by @calcmogul in #1243
- [choreolib] Integrate sample values by @spacey-sooty in #1142
- Copy WPILib's CubicHermiteSpline as a differential initial guess by @shueja in #1099
- [ci] Remove Xcode select now that new version is default by @calcmogul in #1246
- [ci] Upgrade to Xcode 16.2 for newest Sleipnir by @calcmogul in #1247
- [ci] Upgrade to prettier 3.5.3 by @calcmogul in #1248
- Upgrade mobx-react to 9.2.0 with necessary architectural changes. by @shueja in #1249
- Upgrade all dependencies by @calcmogul in #1244
- [build, ci] Switch to publishing to WPILib artifactory by @spacey-sooty in #1250
- [trajoptlib] Upgrade Sleipnir for refactored diagnostics by @calcmogul in #1251
- [trajoptlib] Upgrade Sleipnir for small_vector dependency upgrade by @calcmogul in #1256
- Add logic to backend postprocess to update event marker timestamps by @shueja in #1255
- Store variables in frontend as a map keyed by uuid by @shueja in #1254
- Upgrade Rust and Node dependencies to latest versions by @calcmogul in #1259
- [trajoptlib] Fix parameter name in Pose2.rotate_by by @spacey-sooty in #1262
- Upgrade Rust and TypeScript dependencies to latest versions by @calcmogul in #1264
- [trajoptlib] Upgrade Sleipnir for bound constraint feasibility check by @calcmogul in #1265
- [choreolib] Use Timer.getTimestamp() by @spacey-sooty in #1263
- [trajoptlib] Update Sleipnir error codes by @calcmogul in #1267
- [choreolib java] Use deferredProxy for selectedCommandScheduler by @spacey-sooty in #1268
- Add SystemCore Alpha vendordep to main for hosting by @shueja in #1276
- Add usage reporting in python by @spacey-sooty in #1278
- [docs] Remove emoji by @calcmogul in #1279
- [choreolib] Add linuxsystemcore to binary platform list by @calcmogul in #1280
- Fix dead code warnings by @calcmogul in #1266
- Fix clippy warnings about uninlined format args by @calcmogul in #1282
- Upgrade pnpm, prettier, and eslint by @calcmogul in #1283
- [trajoptlib] Upgrade to Catch2 3.8.1 by @calcmogul in #1284
- [ci] Use runner.os by @calcmogul in #1285
- [docs] Fix package name in build instructions by @calcmogul in #1286
- [docs] Update link to Tauri dependency installation instructions by @calcmogul in #1287
- [choreo] Add button to generate all trajectories by @spacey-sooty in #1291
- Upgrade to wpiformat 2025.34 by @calcmogul in #1292
- Upgrade all dependencies by @calcmogul in #1288
- [choreolib] Remove jerk from trajectory sample interpolation by @calcmogul in #1296
- [choreolib] Upgrade Gradle and Maven dependencies by @calcmogul in #1297
- Upgrade Tauri and other dependencies by @calcmogul in #1299
- Upgrade to Tauri 2.8.3 by @calcmogul in #1304
- Upgrade to Tauri 2.8.4 by @calcmogul in #1305
- [trajoptlib] Upgrade to Catch2 3.10.0 by @calcmogul in #1306
- [trajoptlib] Upgrade Sleipnir for newer Eigen dependency by @calcmogul in #1307
- Upgrade to Tauri 2.8.5 by @calcmogul in #1308
- [trajoptlib] Upgrade Sleipnir for Eigen setFromTriplets() bugfix by @calcmogul in #1309
- [trajoptlib] Fix error print in example by @calcmogul in #1310
- [trajoptlib] Clean up styleguide config by @calcmogul in #1311
- [trajoptlib] Upgrade Sleipnir for Eigen 5.0.0 by @calcmogul in #1312
- [trajoptlib] Upgrade Sleipnir for small performance improvement by @calcmogul in #1313
- [choreolib] Upgrade spotless by @calcmogul in #1314
- [choreolib] Fix differential drive interpolation NaN when ω = 0 by @calcmogul in #1301
- [choreolib] Upgrade to Gradle 9.1.0 by @calcmogul in #1315
- Upgrade all dependencies by @calcmogul in #1316
- [trajoptlib] Upgrade to Catch2 3.11.0 by @calcmogul in #1317
- [trajoptlib] Remove unnecessary CMake settings by @calcmogul in #1318
- Simplify CMake settings by @calcmogul in #1319
- Upgrade to Tauri 2.9.0 by @calcmogul in #1320
- Upgrade to @tauri-apps/cli 2.9.1 by @calcmogul in #1322
- [trajoptlib] Remove redundant CMake scope keywords by @calcmogul in #1323
- [ci] Upgrade actions by @calcmogul in #1324
- [ci] Upgrade to wpiformat 2025.36 by @calcmogul in #1325
- [trajoptlib] Remove CMAKE_ARGS flag from FetchContent_Declare() by @calcmogul in #1326
- Upgrade to Tauri 2.9.2 by @calcmogul in #1328
- [trajoptlib] Migrate from Catch::Approx() to floating-point matchers by @calcmogul in #1329
- Upgrade Sleipnir for custom scalar support by @calcmogul in #1330
- [ci] Use ubuntu-slim for lightweight workflows by @calcmogul in #1331
- [ci] Upgrade to Python 3.14 by @calcmogul in #1332
- [ci] Upgrade to LLVM 21 by @calcmogul in #1333
- [ci] Upgrade runners by @calcmogul in #1334
- [ci] Remove redundant xcode-select commands by @calcmogul in #1335
- [ci] Clean up configuration by @calcmogul in #1336
- [choreolib] Publish macOS universal binaries by @calcmogul in #1338
- [trajoptlib] Simplify CMAKE_BUILD_TYPE setting by @calcmogul in #1337
- Upgrade to wpiformat 2025.48 by @calcmogul in #1343
- [trajoptlib] Upgrade to Sleipnir 0.2.1 by @calcmogul in #1344
- [ci] Remove verbose flag from clang-tidy by @calcmogul in #1345
- Upgrade to Tauri 2.9.3 by @calcmogul in #1346
- [trajoptlib] Upgrade to Sleipnir 0.3.1 by @calcmogul in #1347
- [choreolib] Upgrade to Gradle 9.2.0 by @calcmogul in #1348
- Upgrade to wpiformat 2025.69 by @calcmogul in #1350
- [choreolib] Remove deprecated functions and constants by @calcmogul in #1351
- Normalize line endings for all files by @calcmogul in #1353
- Make update scripts output LF line endings by @calcmogul in #1354
- Run prettier after writing JSONs by @calcmogul in #1355
- WPILIb 2026.1.1-beta-1: Change version and change WPILib version in C++/Java by @shueja in #1352
- Fix Linux artifact names in release workflow by @calcmogul in #1356
- [ci] Add Artifactory credentials to ChoreoLib publish by @calcmogul in #1357
New Contributors
- @samfreund made their first contribution in #1193
- @SpaceStudios made their first contribution in #1200
- @dkt01 made their first contribution in #1203
Full Changelog: v2025.0.3...v2026.0.0-beta-1